[VB.NET] Une exception non gérée

Résolu
KyneasSurYoutube Messages postés 7 Date d'inscription mercredi 4 juillet 2018 Statut Membre Dernière intervention 6 juillet 2018 - 4 juil. 2018 à 10:56
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 - 6 juil. 2018 à 10:54
Bonjour à tous,

Je développement une application, je voudrais créer un fichier (dossier) dans le 'C:\Program Files (x86)\. Mais quand je démarre mon application bah j'ai mon jolie code d'erreur :

Une exception non gérée du type 'System.UnauthorizedAccessException' s'est produite dans mscorlib.dll

Informations supplémentaires : L'accès au chemin d'accès 'C:\Program Files (x86)\' est refusé.

Voici mon code source :

Private Sub StartInstall_Click(sender As Object, e As EventArgs) Handles StartInstall.Click
SetAttr("C:\Program Files (x86)\", vbNormal)
My.Computer.FileSystem.CreateDirectory("C:\Program Files (x86)\***LOGICIELNAME***")
End Sub

Voilà voilà...

Amicalement

4 réponses

Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
4 juil. 2018 à 12:00
Bonjour

Selon ton os ce dossier s’affiche comme ça, mais ça n’est pas le « vrai » chemin.
Il faut utiliser Environment.GetFolderPath
https://msdn.microsoft.com/fr-fr/library/14tx8hby(v=vs.110).aspx

0
KyneasSurYoutube Messages postés 7 Date d'inscription mercredi 4 juillet 2018 Statut Membre Dernière intervention 6 juillet 2018
Modifié le 4 juil. 2018 à 18:09
Bonjour,

Merci de votre réponse mais le problème c'est que je ne sais pas comment utiliser cette environnement...
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
4 juil. 2018 à 18:16
As tu lu l'aide en ligne que je t'ai mis en lien?
Qu'as tu essayé avec?
0
KyneasSurYoutube Messages postés 7 Date d'inscription mercredi 4 juillet 2018 Statut Membre Dernière intervention 6 juillet 2018 > Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024
4 juil. 2018 à 20:33
Bah je ne sais pas utiliser la fonction :/ Pourrais-tu m'expliquer s'il te plait ^^'
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
5 juil. 2018 à 07:35
Bonjour,
je t'ai posé 2 questions simples, aux quelles j'attends que tu répondes avant de t'expliquer quoique ce soit.

Ta réponse qui n'en est pas une, peut s'interpréter de mile façons différentes dont par exemple ces 2 là
  • "Oui j'ai lu l'aide en ligne, mais à la ligne XXX, je n'ai pas compris. J'ai testé l'exemple, il m'affiche bien YYY, mais je n'ai pas su l'adapter à mon cas"
  • "Je n'ai rien lu, je n'ai rien testé, j'attends que tu me donnes tout de suite le code qui marche sans que j'ai un effort à fournir"


Tu comprendras que selon comment je choisis d'interpréter que tu me dises 2 fois "Je sais pas faire", j'ai envie de continuer à t'aider ou pas du tout.

Merci donc de répondre à mes 2 questions, et je t'expliquerai en me basant sur tes réponses.
0
KyneasSurYoutube Messages postés 7 Date d'inscription mercredi 4 juillet 2018 Statut Membre Dernière intervention 6 juillet 2018
5 juil. 2018 à 11:44
Bonjour,
En faite, tu ne comprend pas ma réponse hein... Pfff
Je ne sais pas UTILISER CETTE FONCTION !
J'ai lu l'article mais j'arrive PAS !
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
5 juil. 2018 à 14:08
et manifestement tu ne comprends pas non plus qu'en te contentant de répéter "j'arrive pas" ça ne me permet pas de cerner ce que tu ne comprends pas.
Il y a 2 lignes de codes, parmi les plus simples en VB.Net.
Un exemple tout prêt à tester, que tu ne m'a toujours pas dit si tu avais pris la peine d'essayer.
Bref.....
0
KyneasSurYoutube Messages postés 7 Date d'inscription mercredi 4 juillet 2018 Statut Membre Dernière intervention 6 juillet 2018
5 juil. 2018 à 18:32
J'ai essayé mais cela n'as rien fait :/ Je voudrais le faire marcher sur :
Private Sub StartInstall_Click(sender As Object, e As EventArgs) Handles StartInstall.Click
SetAttr("C:\Program Files (x86)\", vbNormal)
My.Computer.FileSystem.CreateDirectory("C:\Program Files (x86)\***LOGICIELNAME***")
End Sub
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
5 juil. 2018 à 19:43
Bonjour à vous deux
Déjà lorsque je vois le nom de la sub StartInstall je me pose cette question :
KyneasSurYoutube veut-il faire l'installation d'un projet pour avoir l'éxécutable sur son PC comme n'importe quel Setup classique d'un logiciel ?
Si le dossier "C:\Program Files (x86)" n'est pas accessible directement c'est que c'est justement dans ce dossier que les installations avec un vrai Setup se font et qu'il y a des contraintes bien précises pour créer un setup d'installation
Surtout qu'il demande que ce dossier ait l'attribut Normal pour ensuite créer dans ce même dossier le dossier de son "LOGICIELNAME" comme le montre son code

Private Sub StartInstall_Click(sender As Object, e As EventArgs) Handles StartInstall.Click  

 ' attribut Normal
SetAttr("C:\Program Files (x86)\", vbNormal)
 ' création répertoire 
My.Computer.FileSystem.CreateDirectory("C:\Program Files (x86)\***LOGICIELNAME***")

End Sub 


Attendons de savoir le but de ce code pour poursuivre la dicussion


0
KyneasSurYoutube Messages postés 7 Date d'inscription mercredi 4 juillet 2018 Statut Membre Dernière intervention 6 juillet 2018
6 juil. 2018 à 10:00
Bonjour,
Oui c'est pour faire un Set-Up de logiciel...
Merci de ta réponse.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > KyneasSurYoutube Messages postés 7 Date d'inscription mercredi 4 juillet 2018 Statut Membre Dernière intervention 6 juillet 2018
6 juil. 2018 à 10:47
Bonjour
Et ce logiciel est un projet que tu as codé avec Visual Studio Net ?
Si oui précises-moi quel est ta version de visual Studio ?
Car Visual Studio intègre les outils pour faire directement un Setup mais la procédure est différente selon les versions
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
5 juil. 2018 à 23:14
J'ai essayé mais cela n'as rien fait :/

Là au moins ça apporte une information utile, ce code exemple est fonctionnel, mais il faut avoir quelques bases de programmation pour le lancer. Je suppose donc que tu es autodidacte et comme la grande majorité (moi aussi il fut un temps) tu as fait l'impasse sur les bases.

Ça finit toujours par coincer, là c'est simple, mais la prochaine fois ça le sera peut-être moins.
Le meilleur conseil que je puisse te donner est de prendre quelques jours pour suivre un cours en ligne.
Celui-ci est pas mal http://plasserre.developpez.com/cours/vb-net/
Ça te donnera un socle de départ, et tu pourras reprendre ton projet plus efficacement.

Pour ton problème présent.

La classe Environment est une classe "Shared" ça veut dire qu'on ne peut pas l'instancier.
Pour utiliser une méthode, on fait donc
Environment.LaMethode()


La méthode GetFolderPath retourne le chemin d'un dossier système, en fonction du paramètre qu'on lui rentre.

Le paramètre est du type Environment.SpecialFolder, c'est une énumération, c'est à dire une liste de constante.
Par exemple, DayOfWeek est une énumération, avec les constante DayOfWeek.Monday, DayOfWeek.Tuesday, etc...

Dim chemin as string = Environment.GetFolderPath(Environment.SpecialFolder.System)
comme dans l'exemple va placer le chemin du dossier System dans la variable chemin.

Parmi toutes les valeurs Environment.SpecialFolder, il y en a une pour ProgramFiles X86, à utiliser sur un système X64. Sur un système X86, c'est ProgramFiles. Il faut donc tester le type de système avant de choisir la constante

@VB95, bonsoir.
Pour l'attribut et le fait de mettre son programme dans ce répertoire, j'ai envie de dire, quelque part c'est son problème.
0
KyneasSurYoutube Messages postés 7 Date d'inscription mercredi 4 juillet 2018 Statut Membre Dernière intervention 6 juillet 2018
6 juil. 2018 à 10:02
Bonjour,
D'accord, je prend note. Merci de ta réponse.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
6 juil. 2018 à 10:54
0
Rejoignez-nous