我在Vista Ultimate盒子上運行Visual Studio 2008。當我創建一個全新的控制檯應用程序並通過調試器運行以下代碼時,我得到了預期的結果 - 將引發一個UnauthorizedAccessException
並且不會創建該目錄。爲什麼IO.Directory.CreateDirectory不應該成功?
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
當我從我的生產解決方案運行這段代碼相同的位,該IO.Directory.CreateDirectory()
方法是不拋出一個異常,IO.Directory.Exists()
返回True,和目錄實際上不獲取在磁盤上創建。
是否有任何項目/解決方案設置可以使IO.Directory.CreateDirectory()的行爲像這樣變化?
注意:我是而不是在這兩種情況下都以管理員身份運行Visual Studio。
編輯:生產應用程序與測試應用程序在同一個框中運行。
編輯#2:生產應用程序正在使用虛擬化。我點擊我的電腦,導航到C:\ Windows,並在瀏覽器工具欄上點擊「兼容性文件」,它將我帶到我創建的目錄所在的C:\ Users \ myUser \ AppData \ Local \ VirtualStore \ Windows。
唯一未解決的問題是 - 爲什麼測試控制檯應用程序拋出異常時生產應用程序虛擬化?
答案:默認情況下,控制檯應用程序是使用app.manifest創建的。生產應用程序 - 這是一個WPF應用程序 - 沒有app.manifest。如果可執行程序沒有app.manifest,顯然Vista將使用虛擬化。
謝謝大家!
您忘記說明prod是否也在運行Vista。 – RichardOD 2009-05-20 14:29:44
你確定該目錄沒有被創建?嘗試手動創建一個名爲c:\ windows \ zzzz的文件 – RedFilter 2009-05-20 14:32:57