Я запускаю Visual Studio 2008 в окне Vista Ultimate. Когда я создаю новое консольное приложение и запускаю следующий код через отладчик, я получаю ожидаемый результат - вызывается 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 как администратор в любом случае.
EDIT: Производственное приложение работает в том же поле, что и тестовое приложение.
EDIT # 2: Производственное приложение использует виртуализацию. Я нажал на «Мой компьютер», перешел на C: \ Windows и нажал «Файлы совместимости» на панели инструментов проводника, и он привел меня в C: \ Users \ myUser \ AppData \ Local \ VirtualStore \ Windows, где сидели мои созданные каталоги.
Единственный непонятный вопрос - почему виртуализация производственного приложения, в то время как приложение тестовой консоли выдает исключение?
Ответ: консольное приложение по умолчанию было создано с помощью app.manifest. В приложении для производства, которое является приложением WPF, не было app.manifest. Видимо, Vista будет использовать виртуализацию, если нет приложения app.manifest для исполняемого файла.
Спасибо всем!
Вы забыли указать, работает ли prod с Vista. – RichardOD
Вы уверены, что каталог не создается? Попробуйте вручную создать файл с именем c: \ windows \ zzzz – RedFilter