Я использую Visual Studio 2008 на Vista Vista Ultimate. Когда я создаю новое консольное приложение и запускаю следующий код через отладчик, я получаю ожидаемый результат - выдается 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
Когда я запускаю этот же бит кода из моего производственного решения, метод 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. Очевидно, Vista будет использовать виртуализацию, если для исполняемого файла нет app.manifest.
Спасибо всем!