Plantage incessant avec le fichier config [Fermé]

Signaler
Messages postés
203
Date d'inscription
jeudi 9 mars 2017
Statut
Membre
Dernière intervention
8 juillet 2020
-
Messages postés
203
Date d'inscription
jeudi 9 mars 2017
Statut
Membre
Dernière intervention
8 juillet 2020
-
Bonjour,

J'ai créé un logiciel en vb.net qui utilise un fichier config avec lequel j'ai un bug incessant.
Lorsque j'ai créé mon logiciel, aucun problème, chaque fois que je le testais, il fonctionnait parfaitement.
Le problème, c'est quand j'ai essayé de l'installer... En effet, il est censé se trouver dans le dossier Programs Files après installation. J'ai créé un script iss et je l'ai lancé. Après avoir démarré mon logiciel fraîchement installé, j'ai reçu ce message :
************** Texte de l'exception **************
System.Configuration.ConfigurationErrorsException: Une erreur s'est produite lors du chargement d'un fichier de configuration : L'accès au chemin d'accès 'C:\Program Files (x86)\ScreenCapture\vtrx1acc.tmp' est refusé. (C:\Program Files (x86)\ScreenCapture\ScreenCapture.exe.Config) ---> System.UnauthorizedAccessException: L'accès au chemin d'accès 'C:\Program Files (x86)\ScreenCapture\vtrx1acc.tmp' est refusé.
à System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
à System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
à System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
à System.CodeDom.Compiler.TempFileCollection.EnsureTempNameCreated()
à System.CodeDom.Compiler.TempFileCollection.AddExtension(String fileExtension, Boolean keepFile)
à System.Configuration.Internal.WriteFileContext..ctor(String filename, String templateFilename)
à System.Configuration.Internal.InternalConfigHost.StaticOpenStreamForWrite(String streamName, String templateStreamName, Object& writeContext, Boolean assertPermissions)
à System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.OpenStreamForWrite(String streamName, String templateStreamName, Object& writeContext, Boolean assertPermissions)
à System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.OpenStreamForWrite(String streamName, String templateStreamName, Object& writeContext)
à System.Configuration.ClientConfigurationHost.OpenStreamForWrite(String streamName, String templateStreamName, Object& writeContext)
à System.Configuration.UpdateConfigHost.OpenStreamForWrite(String streamName, String templateStreamName, Object& writeContext)
à System.Configuration.MgmtConfigurationRecord.SaveAs(String filename, ConfigurationSaveMode saveMode, Boolean forceUpdateAll)
--- Fin de la trace de la pile d'exception interne ---
à System.Configuration.MgmtConfigurationRecord.SaveAs(String filename, ConfigurationSaveMode saveMode, Boolean forceUpdateAll)
à System.Configuration.Configuration.SaveAsImpl(String filename, ConfigurationSaveMode saveMode, Boolean forceSaveAll)
à System.Configuration.Configuration.Save(ConfigurationSaveMode saveMode)
à ScreenCapture.Form4.Button2_Click(Object sender, EventArgs e)
à System.Windows.Forms.Control.OnClick(EventArgs e)
à System.Windows.Forms.Button.OnClick(EventArgs e)
à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
à System.Windows.Forms.Control.WndProc(Message& m)
à System.Windows.Forms.ButtonBase.WndProc(Message& m)
à System.Windows.Forms.Button.WndProc(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
                            • Assemblys chargés **************mscorlib Version de l'assembly : 4.0.0.0 Version Win32 : 4.8.4042.0 built by: NET48REL1LAST_C CodeBase : file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll----------------------------------------ScreenCapture Version de l'assembly : 1.0.0.0 Version Win32 : 1.0.0.0 CodeBase : file:///C:/Program%20Files%20(x86)/ScreenCapture/ScreenCapture.exe----------------------------------------Microsoft.VisualBasic Version de l'assembly : 10.0.0.0 Version Win32 : 14.8.3761.0 built by: NET48REL1 CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll----------------------------------------System Version de l'assembly : 4.0.0.0 Version Win32 : 4.8.4001.0 built by: NET48REL1LAST_C CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll----------------------------------------System.Core Version de l'assembly : 4.0.0.0 Version Win32 : 4.8.4042.0 built by: NET48REL1LAST_C CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll----------------------------------------System.Windows.Forms Version de l'assembly : 4.0.0.0 Version Win32 : 4.8.4042.0 built by: NET48REL1LAST_C CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll----------------------------------------System.Drawing Version de l'assembly : 4.0.0.0 Version Win32 : 4.8.3761.0 built by: NET48REL1 CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll----------------------------------------System.Configuration Version de l'assembly : 4.0.0.0 Version Win32 : 4.8.3761.0 built by: NET48REL1 CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll----------------------------------------System.Xml Version de l'assembly : 4.0.0.0 Version Win32 : 4.8.3761.0 built by: NET48REL1 CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll----------------------------------------System.Runtime.Remoting Version de l'assembly : 4.0.0.0 Version Win32 : 4.8.3761.0 built by: NET48REL1 CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll----------------------------------------mscorlib.resources Version de l'assembly : 4.0.0.0 Version Win32 : 4.8.3761.0 built by: NET48REL1 CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_fr_b77a5c561934e089/mscorlib.resources.dll----------------------------------------System.Configuration.resources Version de l'assembly : 4.0.0.0 Version Win32 : 4.8.3761.0 built by: NET48REL1 CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration.resources/v4.0_4.0.0.0_fr_b03f5f7f11d50a3a/System.Configuration.resources.dll----------------------------------------System.Windows.Forms.resources Version de l'assembly : 4.0.0.0 Version Win32 : 4.8.3761.0 built by: NET48REL1 CodeBase : file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_fr_b77a5c561934e089/System.Windows.Forms.resources.dll----------------------------------------


Je pense que c'est un problème d'autorisation, parce que quand je le lance en mode admin, je ne constate aucun problème apparent.
Comment puis-je corriger ce problème ?

Merci !

Jojorealisateur

5 réponses

Messages postés
15177
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 décembre 2020
624
Bonsoir

c'est vtrx1acc.tmp ton fichier de configuration?
Messages postés
14741
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 décembre 2020
268
Par défaut, le dossier Program files est en lecture seule pour les utilisateurs.
Messages postés
203
Date d'inscription
jeudi 9 mars 2017
Statut
Membre
Dernière intervention
8 juillet 2020
12
Bonsoir,

Par rapport à la lecture seule, j'étais au courant... Mais que puis-je faire alors ? Le vb.net ne prévoit-il pas cette éventualité ?
@Whismeril, mon fichier config est nomdulogiciel.exe.config. Il est au format XML.

Merci !

Jojorealisateur
Messages postés
15177
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 décembre 2020
624
Bonsoir
<block>@Whismeril, mon fichier config est nomdulogiciel.exe.config. Il est au format XML. </gras>
Ok, c'est pas un fichier perso.
Ton message d'erreur dit que c'est vtrx1acc.tmp qui est inaccessible
Messages postés
203
Date d'inscription
jeudi 9 mars 2017
Statut
Membre
Dernière intervention
8 juillet 2020
12
Oui, excusez-moi... Je n'avais pas compris... Oui, effectivement, c'est écrit dans le message d'erreur :
System.Configuration.ConfigurationErrorsException: Une erreur s'est produite lors du chargement d'un fichier de configuration : L'accès au chemin d'accès 'C:\Program Files (x86)\ScreenCapture\vtrx1acc.tmp' est refusé.
Messages postés
15177
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 décembre 2020
624
Donc, il te faut déterminer à quoi sert ce fichier et comment le rendre accessible.
Comme l'a dit NHenry, ce dossier est inaccessible à l'utilisateur
Messages postés
203
Date d'inscription
jeudi 9 mars 2017
Statut
Membre
Dernière intervention
8 juillet 2020
12
Le fait qu'il est inaccessible en dehors du mode admin, je savais... Mais je pensais quand même que les fichiers config étaient des exceptions (j'ai vraiment été idiot de le penser d'ailleurs).
N'y aurait-il pas un moyen de, par exemple, déplacer ce fichier de configuration vers AppData et de l'utiliser là ?
Messages postés
15177
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 décembre 2020
624
Tu as confirmé que vtrx1acc.tmp n'est pas ton fichier de config, c'est ce fichier qui est inaccessible.
Donc c'est ce fichier qu'il faut traiter.
Trouver à quoi il sert, et pourquoi il est appelé lors de la lecture de ton fichier de config.

Ou alors, tu peux essayer de déplacer des datas vers AppData, mais pas nomdulogiciel.exe.config, à ma connaissance du moins.
Selon ce que j'en sais ce fichier est obligatoirement au même endroit que l'exe.

Rien ne t'empêche de copier le contenu actuel de ce fichier de le mettre un un "vrai" fichier xml quelque part dans AppData et d'aller lire ce fichier de config "personnalisé" comme un fichier xml.
Mais il va te falloir remplacer tout le code qui utilise le fichier de config par défaut. Et le remplacer par les données issues de ton nouveau fichier.

Messages postés
203
Date d'inscription
jeudi 9 mars 2017
Statut
Membre
Dernière intervention
8 juillet 2020
12
Je viens de re-tenter une exécution, mais le fichier vtrx1acc.tmp a changé de nom... C'est à mon avis un simple fichier temporaire, donc le nom est complètement aléatoire.

Je suis moins chaud pour un recodage complet avec un bête fichier XML, s'il y a un autre moyen...
Messages postés
15177
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 décembre 2020
624
Comme tu l'as dit toi même, le fichier de config est un
un bête fichier XML
avec l'extension config, tu peux faire pareil.

Mais je pense vraiment, qu'il faudrait que tu cherches en quoi ce fichier temporaire est nécessaire.

Une autre option est d'installer le logiciel ailleurs.

J'en connais qui sont quasiment à 100% dans AppData, dans programme files, il n'y a qu'un loader
Messages postés
203
Date d'inscription
jeudi 9 mars 2017
Statut
Membre
Dernière intervention
8 juillet 2020
12
J'ai essayé de le mettre dans Appdata, ça fonctionne... Donc c'est ce que je vais faire... Merci beaucoup pour votre aide !

Jojorealisateur