我在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