Rob*_*ers 9 .net permissions file-io
我在Vista Ultimate盒子上运行Visual Studio 2008.当我创建一个全新的控制台应用程序并通过调试器运行以下代码时,我得到一个预期的结果 - UnauthorizedAccessException抛出一个并且不创建目录.
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
Run Code Online (Sandbox Code Playgroud)
当我从生产解决方案中运行相同的代码时,该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将使用虚拟化.
感谢大家!
| 归档时间: |
|
| 查看次数: |
3645 次 |
| 最近记录: |