Ich verwende Visual Studio 2008 auf einer Vista Ultimate-Box. Wenn ich eine nagelneue Konsolenanwendung erstelle und den folgenden Code über den Debugger ausführe, erhalte ich ein erwartetes Ergebnis - ein UnauthorizedAccessException
wird geworfen und das Verzeichnis wird nicht erstellt.Warum ist IO.Directory.CreateDirectory erfolgreich, wenn dies nicht der Fall ist?
Sub Main()
Dim path = "C:\Windows\zzzz"
Try
IO.Directory.CreateDirectory(path)
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Console.WriteLine(IO.Directory.Exists(path).ToString)
Console.ReadLine()
End Sub
Wenn ich das gleiche Stück Code aus meiner Produktionslösung ausgeführt, die IO.Directory.CreateDirectory()
Methode ist nicht eine Ausnahme zu werfen, IO.Directory.Exists()
gibt Wahr zurück, und das Verzeichnis nicht tatsächlich auf der Festplatte erstellt bekommen.
Gibt es Projekt-/Lösungseinstellungen, die das Verhalten von IO.Directory.CreateDirectory() variieren würden?
Hinweis: Ich bin nicht in jedem Fall Visual Studio als Administrator ausgeführt wird.
EDIT: Die Produktion Anwendung läuft auf der gleichen Box wie die Testanwendung.
EDIT # 2: Die Produktionsanwendung verwendet Virtualisierung. Ich klickte auf Arbeitsplatz, navigierte zu C: \ Windows und klickte auf "Compatibility Files" in der Explorer-Symbolleiste und brachte mich zu C: \ Benutzer \ myUser \ AppData \ Local \ VirtualStore \ Windows, wo meine erstellten Verzeichnisse waren.
Die einzige offene Frage ist - warum die Produktionsanwendung virtualisiert, während die Testkonsole eine Ausnahme auslöst ??
Antwort: Die Konsolenanwendung wurde standardmäßig mit einem app.manifest erstellt. Die Produktionsanwendung, bei der es sich um eine WPF-Anwendung handelt, hatte kein app.manifest. Anscheinend wird Vista die Virtualisierung verwenden, wenn für das Executable kein app.manifest vorhanden ist.
Danke allen!
Sie haben vergessen zu sagen, ob Prod läuft auch Vista. – RichardOD
Sind Sie sicher, dass das Verzeichnis nicht erstellt wird? Versuchen Sie, manuell eine Datei mit dem Namen c: \ windows \ zzzz zu erstellen. – RedFilter