Ich stoße auf ein Problem, wenn ich versuche, WNetAddConnection2 zu einem Computer aufzurufen, auf dem ich bereits eine Sitzung habe. Dies wird erwartet, da Sie nur mit einer einzigen Anmeldeinformation eine Verbindung zu einer Netzwerkressource herstellen können. Was ich versuche, ist, diese Bedingung zu erfassen und automatisch WNetCancelConnection2 aufzurufen, um alle bestehenden Verbindungen zu trennen und dann den WNetAddConnection2-Aufruf erneut zu versuchen. Wenn ich den folgenden Code ausführe, erhalte ich folgende Logmeldungen:
%Vor%Wenn ich in WNetCancelConnection dwFlags auf CONNECT_UPDATE_PROFILE setze, erhalte ich folgende Protokollmeldungen:
%Vor%Hier ist meine Quelle, alle Hilfe wird geschätzt!
%Vor% Besteht dieses Problem noch oder haben Sie es gelöst?
Ich hatte den gleichen Fehler, weil ich offene Verbindungen zu der Ressource hatte, mit der ich mich verbinden wollte. Diese Verbindungen wurden beim Start automatisch durch ein Anmeldeskript unserer Windows-Netzwerkdomäne geöffnet. Also habe ich "net use" verwendet, um sie zu trennen (ALLE Verbindungen zum Zielcomputer). Danach hat es gut funktioniert.
Dies bedeutet, dass es sich nicht um einen Fehler in Ihrem Code handelt, sondern um ein Problem in Windows-Netzwerken.
Übrigens: Sie sollten "net use" trotzdem verwenden, um zu sehen, ob Sie Ihren Code auf Erfolg prüfen und nicht nur den Debug-Nachrichten vertrauen.
Und hier ist ein Link zu den Fehlercodes: Ссылка
Ich hatte das gleiche Problem und der Grund war:
wie es heißt errorCode 1219 bedeutet, dass es bereits Verbindungen zu dieser Ressource gibt. Sie können Verbindungen mit WNetCancelConnection2 (networkName, 0, true); abbrechen, aber dies wird nicht geschlossen, wenn Windows Explorer Verbindungen zu dieser Ressource hat. So stellen Sie sicher, wenn Sie Fenster mit dem Inhalt dieser Ressource schließen Sie sie manuell und dann versuchen, es funktioniert. Jedenfalls können Sie immer "net command" verwenden, um zu sehen, wie viele n / w-Mappings in Ihrem System vorhanden sind: usage is = open command prompt sie geben ein: net use Es wird angezeigt, ob das Mapping bereits vorhanden ist oder nicht.
Dies ist ein Beispielcode, den ich geschrieben habe und der auf win 8 funktioniert:
%Vor%}