ConnectionString ändern

18/09/2009 - 18:16 von Christian Lohmann | Report spam
Hallo zusammen,

ich entwickle momentan ein Datenbank-Projekt. Die Daten werden aus der SQL
Server-Express-Datenbank in ein DataSet geladen. Der ConnectionString wurde
automatisch mit dem Asisstenten aus Visual C# 2008 definiert.

Wird das Programm ausgeführt, greift es jedoch auf eine andere DB zu. Für
jeden Benutzer gibt es eine eigene "Store.mdf" in seinem
LocalApplicationDataFolder. Bei jedem Programmstart ermittle ich den Pfad des
Ordners und überschreibe den ConnectionString in der config-Datei. Auf die
config-Datei greife ich mit der XmlDocument-Klasse zu. Führe ich mein Projekt
im Visual Studio-Projektordner aus, funktionert alles prima. Nachdem ich es
aber zu Testzwecken in C:\Programme kopiert habe, kommt eine Exception: "Der
Zugriff auf die ViasPortal.exe.config wurde verweigert."

Was mache ich falsch? Hat es evtl. etwas mit der UAC in Vista zu tun?

Gruß, Christian
 

Lesen sie die antworten

#1 Frank Dzaebel
18/09/2009 - 20:24 | Warnen spam
Hallo Christian,

Nachdem ich es aber zu Testzwecken in C:\Programme
kopiert habe, kommt eine Exception:
"Der Zugriff auf die ViasPortal.exe.config wurde verweigert."
Was mache ich falsch? Hat es evtl. etwas mit der UAC in Vista zu tun?



Nicht unbedingt, die Sicherheitseinstellungen gelten überwiegend
auch noch unter XP, nur, dass man dort früher oft mit dem Admín
seine Programme ausgeführt hatte, und gewisse Dinge eben
deswegen nicht merkte ;-)

Das Windows-Prinzipal (normal der aktuelle ausführende Benutzer)
muss eben schlicht die Rechte haben, auf die Config-Datei zuzugreifen.
Deswegen nimmt man oft einen Ordner unterhalb des UserProfile.
Über die typsicheren Settings benutzt man ja oft schon eine
"User.config", die unterhalb dieses Profiles liegt, indem also der
aktuelle Benutzer Rechte hat.


LocalApplicationDataFolder



je nach Roaming ggf. besser:

[Application.LocalUserAppDataPath-Eigenschaft (System.Windows.Forms)]
http://msdn.microsoft.com/de-de/lib...apath.aspx

[Application.UserAppDataPath-Eigenschaft (System.Windows.Forms)]
http://msdn.microsoft.com/de-de/lib...apath.aspx

Das könnte schon der Auslöser sein.
_______

Auf die config-Datei greife ich mit der XmlDocument-Klasse zu.



Gut, ich hàtte jetzt einen eigenen Settings-
Provider dafür erstellt, aber das geht ja imP rinzip auch.

Du solltest letztlich genau den Pfad herausfinden, auf
den zugegriffen wird und Dir einmal über rechte Maus
Eigenschaften / Sicherheit die Benutzer anschaun, die
darauf berechtigt sind.

Falls Du irgendwo mit Impersonifikationen o.à. arbeitest,
lasse Dir zur Sicherheit den:
WindowsIdentity.GetCurrent().Name
ausgeben.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen