Je cours Visual Studio 2008 sur une boîte Vista Ultimate. Lorsque je crée une toute nouvelle application de console et exécute le code suivant via le débogueur, j'obtiens un résultat attendu - un UnauthorizedAccessException
est lancé et le répertoire n'est pas créé.Pourquoi IO.Directory.CreateDirectory réussit-il lorsqu'il ne le devrait pas?
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
Quand je lance ce même morceau de code de ma solution de production, la méthode est IO.Directory.CreateDirectory()
pas lancer une exception, IO.Directory.Exists()
renvoie la valeur true, et le répertoire ne soit pas réellement créé sur le disque.
Y a-t-il des paramètres de projet/solution qui font varier le comportement de IO.Directory.CreateDirectory() de la sorte?
Note: Je suis pas en cours d'exécution Visual Studio en tant qu'administrateur dans les deux cas.
EDIT: L'application de production s'exécute sur la même boîte que l'application de test.
EDIT # 2: L'application de production utilise la virtualisation. J'ai cliqué sur Poste de travail, navigué à C: \ Windows, et cliqué sur "Fichiers de compatibilité" dans la barre d'outils de l'explorateur et cela m'a amené à C: \ Users \ myUser \ AppData \ Local \ VirtualStore \ Windows où mes répertoires créés étaient assis.
La seule question en suspens est - pourquoi la demande de production virtualiser alors que l'application de la console de test lance une exception ??
Réponse: l'application de la console, par défaut, a été créé avec un app.manifest. L'application de production - qui est une application WPF - n'a pas de app.manifest. Apparemment, Vista utilisera la virtualisation s'il n'y a pas de app.manifest présent pour l'exécutable.
Merci à tous!
Vous avez oublié d'indiquer si prod utilise également Vista. – RichardOD
Etes-vous sûr que le répertoire ne soit pas créé? Essayez de créer manuellement un fichier nommé c: \ windows \ zzzz – RedFilter