VB6-Anwendung unter Windows 7 kann nicht auf zugeordnete Laufwerke zugreifen

8

Ich habe eine VB6-Anwendung, die von einem Windows 7 32-Bit-Rechner zu mehreren POS-Terminals führt. Die POS-Terminals sind dem Windows 7-Rechner zugeordnet, und ich kann vom Windows 7-Rechner aus über den Explorer oder über die cmdline / shell auf die POS-Terminals zugreifen.

Die Anwendung wurde auf ADO 2.8 aktualisiert und alle anderen Steuerelemente und Komponenten, für die ich keinen Quellcode mehr hatte, wurden neu geschrieben. Nach ein paar nervigen Schluckauf, habe ich die Anwendung auf dem Windows 7 Computer ohne Fehler zu kompilieren.

Jetzt kommen die Probleme. Die VB6-Anwendung kann keine zugeordneten Laufwerke anzeigen oder zu ihnen navigieren! Ich habe versucht, UAC-Einstellungen zu ändern; Ich habe die App so eingerichtet, dass sie im Windows XP SP3-Modus ausgeführt wird. Ich habe versucht, als Administrator zu laufen. Keines dieser Dinge (und viele Permutationen davon) funktionieren.

Irgendwelche Vorschläge, wie dies funktioniert?

    
Shane Brodie 11.01.2012, 01:09
quelle

3 Antworten

8

Das Hinzufügen dieser Registrierungseinstellung hat das Problem für mich gelöst: Ссылка .

  

Konfigurieren Sie die EnableLinkedConnections, um dieses Problem umzugehen   Registrierungswert. Dieser Wert aktiviert Windows Vista und Windows 7   Netzwerkverbindungen zwischen dem gefilterten Zugriffstoken und dem   vollständiges Administratorzugriffstoken für ein Mitglied der Administratoren   Gruppe. Nachdem Sie diesen Registrierungswert konfiguriert haben, überprüft LSA, ob   Es gibt ein weiteres Zugriffstoken, das dem aktuellen Benutzer zugeordnet ist   Sitzung, wenn eine Netzwerkressource einem Zugriffstoken zugeordnet ist. Wenn LSA   stellt fest, dass ein Token für verknüpfte Zugriffe vorhanden ist, fügt es das Netzwerk hinzu   Freigabe zum verknüpften Standort Um die EnableLinkedConnections zu konfigurieren   Registrierungswert

     
  1. Klicken Sie auf Start, geben Sie regedit im Feld Programme und Dateien starten ein, und   Drücken Sie dann die EINGABETASTE.

  2.   
  3. Suchen Sie und klicken Sie dann mit der rechten Maustaste auf den Registrierungsunterschlüssel HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System.

  4.   
  5. Zeigen Sie auf Neu, und klicken Sie dann auf DWORD-Wert.

  6.   
  7. Geben Sie EnableLinkedConnections ein, und drücken Sie dann die EINGABETASTE.

  8.   
  9. Klicken Sie mit der rechten Maustaste auf EnableLinkedConnections, und klicken Sie dann auf Ändern.

  10.   
  11. Geben Sie im Feld Wert 1 ein und klicken Sie dann auf OK.

  12.   
  13. Beenden Sie den Registrierungseditor, und starten Sie den Computer neu.

  14.   
    
Motes 25.06.2012 17:19
quelle
4

Ich glaube, dass Sie Probleme haben, weil die Zuordnung von zufälligen Laufwerken pro Benutzer und auf einem UAC-System Benutzergruppen von Administratoren zwei separate Kontexte haben (einen für jedes Token: SU & amp; erhöht).

Es gibt eine Laufwerkszuordnung auf Systemebene, die unter dem Systembenutzer (NT Authority \ System) ausgeführt wird. Wenn Sie ein Laufwerk unter diesem Konto zuordnen und es dauerhaft zuordnen, können alle Benutzer das Mapping sehen und verwenden (vorbehaltlich der üblichen Zugriffsrechte für Dateien dort).

Dies geschieht normalerweise über Gruppenrichtlinienobjekte auf Domänenebene, was bedeutet, dass Sie Ihre lokalen Box-Jockeys bestechen, wenn Sie sich in einer vom Unternehmen verwalteten LAN-Umgebung befinden.

Eine Möglichkeit, dies in einer Workgroup-Maschine zu tun, besteht darin, den Buchstaben als System über den AT-Befehl von einer erhöhten Eingabeaufforderung abzubilden:

%Vor%

Dort ist der Remote-Server MediaShare, Benutzer TheUser, Passwort ThePW, und 8:53 AM ist eine Minute oder zwei in der Zukunft, um zu vermeiden, diese für morgen versehentlich zu planen.

Aber das scheitert an Vista und später wegen Session 0 Isolation!

Also ... verwenden Sie die dritte Alternative bei Run CMD. exe als Local System Account , was auch in der Antwort von ForcePush auf So ordnen Sie ein Netzlaufwerk zu, das von einem Dienst verwendet werden soll .

Ich glaube, das ist es, was Sie hier suchen.

    
Bob77 11.01.2012 14:14
quelle
0

Ich weiß nicht, ob Sie jemals das herausgefunden haben, aber für mich war es der Befehl ChDir (sogar mit dem Registry-Fix ​​oben).

Ich hatte in meinem Code

ChDir "P:\Temp\VidCap\Cam1\" 'I almost never use ChDir Open "list.txt" For Output As #1

und alle eingebauten VB6-Dateibefehle sahen direkt durch alle Operationen, keine Fehler, nichts. Ich löste es, indem ich explizit den Pfad hatte (in meinem Code war es in einer Zeichenkette, aber Sie konnten es ausdrücklich haben):

dd = "P:\Temp\VidCap\Cam1\" Open dd & "list.txt" For Output As #1 funktioniert wie erwartet.

hoffe das hilft

H

    
hendy 25.06.2015 20:46
quelle

Tags und Links