2017-09-07 13 views
0

J'ai donc un DB (webster.accdb) qui sera obtenir installé sur un serveur (par exemple. \ SERVEUR \ WEBSTER) Cependant différents endroits peuvent avoir différents noms de serveur (ADMIN1 etc etc)C# Chaîne de connexion enregistrée dans AppData?

Lorsque le programme à l'origine installe, il vérifie la chaîne de caractères dans app.config que j'ai mis comme "DEFAULT" - littéralement la chaîne. Le programme vérifie la chaîne de connexion dans app config, et s'il est DEFAULT, il lance une petite invite que j'ai faite qui demande des détails à l'utilisateur concernant le nom du serveur et quelques autres spécificités.

Ils cliquent sur "se connecter" et il écrit la nouvelle chaîne de connexion construite dans app.config et le programme charge après une série de tests.

Maintenant, cela fonctionne sous tests VS et installe sur D: lecteurs dans les dossiers temporaires. Mon problème est que si «correctement» installé à la section des fichiers de programme, alors nous avons maintenant le problème de l'accès étant refusé pour modifier le fichier.

Ainsi, quelqu'un pourrait me diriger dans la bonne direction en ce qui concerne le processus correct que je sais que je le fais mal:

  1. Créer un XML en Appdata pour l'utilisateur, qui a les chaînes de con , et cela est généré lors de la première utilisation, et est utilisé pour les interprétations à partir de ce moment? Enregistrez les paramètres en tant que paramètres et utilisez This code pour mettre à jour les paramètres, puis assurez-vous que tous mes paramètres dans mon programme ne pointent plus vers la configuration, mais vers les paramètres ??

    1. Quelque chose de mieux parce que je suis désemparé et ce n'est pas du tout la façon dont je devrais faire ça du tout!

code utilisé pour mettre à jour la configuration:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
     config.ConnectionStrings.ConnectionStrings["LOTSConnectionString"].ConnectionString = "Data Source=" + txtpcname.Text + ";Initial Catalog=" + cmbdispense.SelectedItem + ";Integrated Security=False;User ID=webbit;Password=ill923r6MG"; 
     config.Save(ConfigurationSaveMode.Modified, true); 
+0

sur une note différente, j'ai simplement bêtement remarqué que je n'ai pas utilisé les paramètres ici .. que j'ai pour toutes les sections SQL. Est-ce encore sensible à l'injection SQL? Je ne l'aurais pas pensé car il ne peut même pas se connecter à la DB, mais je suis sûr que sa meilleure pratique pour le faire d'une manière différente? –

Répondre

0

Donc, à peu près, je confesse moi-même de ne pas comprendre les avantages de la section USER de la config. J'ai modifié mes chaînes de connexion à "STRING" et j'ai placé dans la section USER des paramètres.

Maintenant, je peux faire référence à mes chaînes comme

properties.settings.default["ConString"].tostring 

Il est ensuite enregistré dans l'utilisateur/APPDATA/Local

Pour noobs comme moi lisant ceci, cela signifie que le fichier app.config d'origine dans programfiles reste LE MEME, mais un extrait est retiré de celui-ci concernant la section utilisateur et mis dans appdata. Ce qui m'embarrassait tout le temps était de sélectionner "chaîne de connexion" dans les paramètres, ce qui ne permettait pas la sélection en tant que paramètre USER.

0

Access Denied signifie que l'utilisateur qui exécute l'application soit ne pas l'autorisation ou en raison de la sécurité intégrée du système d'exploitation, l'application est en cours d'exécution sous autorisations restreintes. Essayez d'exécuter l'application avec l'administrateur en cliquant dessus avec le bouton droit de la souris et en choisissant Exécuter en tant que.

Vous pouvez éviter cela en configurant la chaîne de connexion au moment de l'installation à la place. Invite un utilisateur à entrer des détails lors de l'installation.

+0

Je préférerais exécuter à partir du programme, comme si la base de données est déplacée ou si l'ordinateur est renommé etc etc, j'ai besoin d'eux pour pouvoir éditer ceci encore. –

+0

Si j'ouvre avec des droits d'administrateur, il PEUT écrire au fichier de configuration, mais le reste du programme échoue toujours. il ne peut pas ouvrir la connexion! –

+0

Quelle erreur obtenez-vous lors de l'établissement d'une connexion? –