9

Nicht wirklich sicher, meine genauen Frage, aber hier ist die Situation:Visual Studio Administrator-Modus in Windows 10

Ich habe eine Anwendung (WinForms, C# .NET), die ich in Visual Studio entwickle 2012. Es tut eine Menge Dinge, aber das wichtige ist, dass es Dateien von einem bestimmten Ort lesen muss.

In diesem Fall befindet sich der Speicherort der Dateien auf einem Server und auf meinem Computer ist ein Netzwerklaufwerk für den Zugriff auf die Dateien zugeordnet. Ich kann manuell zu den Dateien mit Windows Explorer fein navigieren.

Ich habe die folgende Zeile in meinem Code, der das Problem hervorhebt:

System.IO.File.Exists("X:\\A Folder\\a_file.txt"); 

Und diese Datei existiert an dieser Stelle. Dies ist jedoch der Punkt, an dem das Problem auftritt: wenn ich die Lösung erstelle und die .exe direkt aus dem Ordner "bin" ausführe (Doppelklick). Der Code ist in Ordnung, und es findet die Datei. Aber wenn ich es mit Visual Studio starte, bekomme ich eine Ausnahme "Datei nicht gefunden".

Ich setze dies auf die Tatsache, dass Visual Studio im "Administrator" -Modus läuft (ich vergesse, warum ich das brauchte, aber ich tue). Dies ist nun sinnvoll, wenn Sie berücksichtigen, dass das Konto "Administrator" nicht über das Laufwerk "X: \" verfügt. Dies war jedoch nie ein Problem, bis ich letzte Woche auf Windows 10 aktualisiert habe.

So ist meine Frage:

Ist Visual Studio Administrator-Modus funktionieren anders in Windows 10? Handelt es sich in diesem Fall um zugeordnete Netzlaufwerke anders?

Es ist erwähnenswert, dass ich von Windows 7 aktualisiert, so kann ich nicht bestätigen, ob dieses Problem auch in 8 und 8.1 oder nicht vorhanden ist.

Und bevor jemand fragt, lassen Sie uns einfach sagen hat, um ein zugeordnetes Laufwerk zu sein. Keine UNC-Pfade erlaubt!

+0

Vielleicht ist es nicht zu Ihrer Frage, aber 10 Windows-in nicht in Unterstützte Systemliste von VS 2012-Update 5. Siehe http: // www .microsoft.com/de-de/download/details.aspx? id = 48708. Sie können in Zukunft auf andere Probleme stoßen. – qxg

+0

@qxg: die schaut, wie ich noch auf Update 4 in der Minute bin, so dass ich kann bis 5 und sehen bewegen, wenn es einen Unterschied macht ... – musefan

+0

... keinen Unterschied auf Update 5 – musefan

Antwort

5

So habe ich eine Lösung/Workaround gefunden. Irgendwie scheint es jetzt eine verpfuschte Prämie zu sein, also wenn jemand andere Vorschläge hat, die besser sind, dann posten Sie bitte und ich werde sie überprüfen und gegebenenfalls vergeben. Oder auch wenn jemand eine detailliertere Version meiner Lösung machen kann, dann werde ich diese vergeben.

Das Problem ist wahrscheinlich nicht spezifisch für Visual Studio, sondern würde bei jeder Anwendung auftreten, die mit erhöhten Rechten ausgeführt wird. Wie auch immer, die Lösung, die ich gefunden habe, besteht darin, einen Registrierungsschlüssel hinzuzufügen, der den Zugriff auf dieselben freigegebenen Laufwerke im Administratormodus ermöglicht.

Der Registrierungsschlüssel Lage ist:

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/Currentversion/Policies/System

Und der Schlüssel hinzuzufügen heißt:

EnableLinkedConnections

und soll als DWORD mit einem Wert von 1 (0x00000001)

ich mit den Maschinen mit Windows 7 geprüft erstellt werden, und sie haben nicht diese Schlüssel, aber sie arbeiten immer noch in Ordnung. Also ich erwarte, dass dies nicht die einzige Lösung ist, aber es scheint zu funktionieren (keine Nebenwirkungen bemerkt noch). Ich nehme an, dass Windows 10 irgendwo eine bestimmte Einstellung hat, die standardmäßig verhindert, dass zugeordnete Laufwerke automatisch mit "Als Administrator ausführen" verfügbar sind.

als Referenz, fand ich this information here.

Tatsächlich here is a more "official" recommendation für die Verwendung dieser Ausrichtungs-Schlüssel.

+0

dafür ein Hotfix zur Verfügung. Ich bin mir nicht sicher, ob dies ein anderer Weg ist, als es manuell zu tun.hier ist der [link] (https://support.microsoft.com/en-us/kb/2878604) – Webruster

2

Dies ist wahrscheinlich nicht mit Windows 10 zu tun, nur mit der Konfiguration Ihres Geräts. Was Sie beschreiben, ist normal und umfasst this KB article. Nichts, was ich selbst überprüfen kann, probieren Sie einfach die empfohlenen Workarounds aus, und folgen Sie bei Bedarf auf superuser.com.

+0

ich die erste Methode versucht (es wurde bereits auf "Eingabeaufforderung für Nicht-Windows-Binärdateien anfordern" eingestellt, aber ich habe auch versucht, wie "Aufforderung zur Einwilligung", das hat nicht geholfen. Ich möchte die .bat-Methode nicht ausprobieren, auch wenn es funktioniert. Ich will es nicht als Lösung. Ich bin der einzige Entwickler mit Windows 10, und ich bin der einzige Entwickler mit dem Problem (also bezweifle ich, dass es ein Domain-Gruppenrichtlinien-Problem ist). Dieses Problem trat nie vor Windows 10 zu aktualisieren, wenn die IT-Jungs wieder im Büro sind ich durch sie mit ihnen gehen, um zu sehen, ob ich das als ein GP Problem identifizieren kann, aber ich bin nicht überzeugt, – musefan

+0

Hmm, so dass EnableLinkedConnections Registrierungsschlüssel, der in dem Artikel erwähnt wurde, war für Sie überhaupt nicht hilfreich? Bumm .. –

+0

Habe das nicht mal gesehen, vielleicht sollten sie das in den "Workaround" Abschnitt verschieben, wo sie die anderen Vorschläge zur Behebung des Problems machen. Ich habe Ihnen das Kopfgeld gegeben, weil es in ein paar Minuten abläuft (und ich fühle mich schlecht, weil ich das Reg-Edit-Bit vermisst habe), aber ich bewerte das nicht als eine anständige Antwort ... es ist im Grunde eine "Nur Link" -Lösung – musefan

0

Verschiedene Benutzer/System-Tasks vielleicht läuft. Daher haben Sie das X-Laufwerk zugeordnet, andere nicht. Sie können die Laufwerkszuordnung auch für zusätzliche Benutzer in Ihrer Windows-Installation vornehmen. Wie Sie bereits sagten, sollte dies kein Windows 10-Problem sein, sondern Windows 7+ und erhöhte Rechte.

Vielleicht könnten Sie einen konfigurierten Parameter für den Pfad X: verwenden und zur Laufzeit laden, oder versuchen Sie sogar UNC-Pfade zu verwenden, die zur Laufzeit auflösen und das Laufwerk nicht zugeordnet werden müssen.

\\ServerNameOrIP\A Folder\a_file.txt. 

Im Code würden Sie brauchen:

System.IO.File.Exists("\\\\ServerName\\A Folder\\a_file.txt"); 
Verwandte Themen