Windows 10 kann nicht auf das angegebene Gerät, den Pfad oder die Datei zugreifen, wenn der vollständige Pfad zur ausführbaren Datei als Administrator verwendet wird

8

Hinweis : Ich habe das Verzeichnis durch a und die exe durch b.exe ersetzt und ich habe jeden Test wiederholt, um sicherzustellen, dass es sich nicht um eine Tipp-Syntax handelt.

Ich habe einen sehr einfachen Code, der perfekt von Windows XP bis Windows 7 funktioniert.

%Vor%

und auch

%Vor%

Seit Windows 10 (ich habe noch nicht 8 und 8.1 getestet), wirft der erste Code System.ComponentModel.Win32Exception ("Angegebene Datei nicht gefunden") und zweitens wird false zurückgegeben. .

Ich habe auch bemerkt, dass es dasselbe Verhalten ist, wenn ich "c: \ a \ b.exe" mit dem Windows-Startfenster (Windows-Taste + R) starte.

Gibt es Workarounds, um dieses Problem zu lösen? Vorzugsweise eine Lösung, die keine Neukompilierung impliziert.

NB :

  • Ich führe Windows als Administrator
  • Der Benutzer hat Zugriff auf die Datei (Sicherheitsattribut für alle Benutzer im Computer aktiviert) .
  • c:\b.exe funktioniert !!
  • Ich bin nicht auf der Suche nach einer Lösung wie das Arbeitsverzeichnis Ihrer Anwendung ändern und Process.Start ("b.exe") ausführen.

Danke euch allen,

BEARBEITEN:

  • Der angegebene Pfad ist nicht FALSCH und die Datei fehlt nicht.
  • Jeder Benutzer des Computers als "Total control level" kann über den Ordner und die Datei ( a directory und b.exe )
  • zugreifen
  • Funktioniert, wenn ich die exe auf das Root-Verzeichnis: "c: \ b.exe"
  • Gleiches Verhalten bei .bat-Datei mit nur "echo Hello inside"
  • Console.WriteLine(String.Join("\r\n", Directory.GetDirectories(@"c:\"))) zeige das Verzeichnis c:\a an

UPDATE:

Ergebnisse von icalcs c:\a\ :

%Vor%

Ergebnisse von icalcs c:\a\b.exe :

%Vor%

"Tout le monde" bedeutet Jeder.

AKTUALISIEREN :

Auf die letzten Nachrichten kann ich folgendes tun:

%Vor%

Aber ich kann das nicht machen

%Vor%

Werfen "System.NotSupportedException". StackTrace ist wie folgt:

%Vor%     
Pablo Honey 06.11.2015, 15:51
quelle

2 Antworten

4

Ich habe es gefunden !!

Es sind einige nicht druckbare Bytes, die im Dateipfad hinzugefügt werden, wenn Sie einige Beschriftungen im Windows 10 Explorer kopieren / einfügen.

Betrachten Sie diesen Code:

%Vor%

Diese Zeile sieht gleich aus und sollte keine Ausnahme auslösen (auch wenn das Verzeichnis c:\a nicht existiert), aber wenn Sie den Code oben in einer Anwendung kopieren / einfügen, erhöht die zweite Zeile NotSupportedException mit Wörtern : " Das Format des angegebenen Pfads wird nicht unterstützt ".

Ich habe den .NET-Quellcode überprüft und die Methode gefunden StringExpressionSet.Canonicalize , das NotSupportedException ausgelöst hat:

%Vor%

Und eigentlich:

%Vor%

Wo habe ich es gefangen?

Um keinen Tippfehler zu machen, verwende ich den Verzeichnispfad von Rechtsklick auf eine Datei - & gt; Properties - & gt; Security

Sie werden jetzt gewarnt !

    
Pablo Honey 13.11.2015, 18:06
quelle
1
%Vor%

Das Verschleiern des Verzeichnis- und Dateinamens macht es sehr schwer, Ihnen zu helfen. Aber es gibt einen offensichtlichen Stein, unter dem man die Akzentbuchstaben sehen kann, die so stark zerfleischt werden, dass dies niemals passieren sollte. Die Maschine spricht Französisch, aber die Codierung, die verwendet wird, ist 1250, nur in Osteuropa verwendet. Eine sehr bizarre Diskrepanz, besonders für eine App im Konsolenmodus.

Wenn das Verzeichnis real a ebenfalls Zeichen mit diakritischen Zeichen enthält, kann sich die Ursache für die fehlerhafte icalcs.exe-Programmausgabe auch auf die Namenscodierung des Dateisystems auswirken. Raue Schlussfolgerung ist, dass diese Maschine ziemlich krank ist und Hilfe vom Geek-Trupp braucht, um besser zu werden.

    
Hans Passant 10.11.2015 11:48
quelle