Gelegentlich melden einige Benutzer unserer Software Probleme, die durch verkabelte DirectoryNotFoundException
Exceptions verursacht werden. Dies geschieht nur bei einigen Benutzern mit Vista. Nicht alle Benutzer, die Vista ausführen, haben dieses Problem. Es gab keine Berichte von Benutzern mit Win7 oder XP (dies beweist jedoch nicht, dass dieses Problem auf diesen Systemen nicht auftritt - wir haben solche Berichte nicht).DirectoryNotFoundException beim Zugriff auf ProgramData unter Vista - Einen Teil des Pfades konnte nicht gefunden werden - WinIOError
Unsere Software speichert einige Grafikdaten im ProgramData-Ordner. Wenn das Programm versucht, diese Dateien die folgende Ausnahme zu lesen geworfen:
Message: Could not find a part of the path 'C:\ProgramData\My App Name\Subfolder\Subfolder'.
mscorlib
in System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
in System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption)
in System.IO.Directory.GetFiles(String path, String searchPattern, SearchOption searchOption)
in System.IO.Directory.GetFiles(String path)
Der Weg ist C: \ Programdata \ My App Name \ Unterordner \ Subfolder. Ordner existiert - ich bin 100% sicher. Es wurde von NSIS Installer erstellt. Es ist für alle Benutzer schreibbar (oder zumindest sollte es so sein, wie wir es mit NSIS-Skript einstellen). Der Benutzer bestätigt, dass der Ordner existiert - er kann mit Windows Explorer zu diesem Ort navigieren.
Zuerst dachte ich, es war das UAC-Problem, aber die Ausnahme sagt Konnte einen Teil des Pfades nicht finden. Das macht mich verrückt, da wir das Problem auf unseren Testsystemen nicht reproduzieren können. Egal, die Konfiguration. XP, Vista, Win7 - auf unseren Rechnern funktioniert es einfach.
Haben Sie versucht, eine einfache Anweisung if (! File.Exists (path)) direkt vor dieser Codezeile auszuführen, nur für den Fall, dass .NET die Datei nicht lesen kann? – Josh
"Der Pfad ist C: \ ProgramData \ Mein App-Name \ Unterordner \ Unterordner. Ordner existiert - ich bin 100% sicher. Er wurde von NSIS Installer erstellt." Sind Sie 100% sicher, weil Sie sich auf das NSIS-Installationsprogramm verlassen, oder weil Sie auf dem betreffenden Computer starten können -> run -> "C: \ ProgramData \ Mein App-Name \ Subfolder \ Subfolder" und tatsächlich die Ordnerinhalte auf diese Weise? –
@AJ. - Der Benutzer hat bestätigt, dass er mit Windows Explorer zu diesem Pfad navigieren kann. Ich habe den Screenshot gesehen. – SiliconMind