Zugriff auf .sdf als nicht Admin nicht zugelassen

05/04/2010 - 08:17 von Uwe Conradi | Report spam
Hallo zusammen,
ich habe gerade eine Anwendung (vb.net + MS SQL Server CE Datenbank)
erstellt. Beim Testen des Installationspakets auf Win.7 als nicht Admin
kommt es zur Meldung, dass der Zugriff auf die Datenbank nicht zulàssig ist.
In den Eigenschaften des Installprojekts habe ich festgelegt, dass die
Anwendung für alle Benutzer gilt. Wenn ich als Admin den Schreibzugriff für
den Installationsordner freigebe, dann làuft die Anwendung auch bei den
anderen Benutzer.
Wie soll ich das Entstehen dieses Problems verhindern? Kann ich irgendwo im
Installationsprojekt den Zugriff auf den Programmordner oder auf die
Datenbank auf dem Zielrechner freigeben?
Danke für euere Tips!
Uwe
 

Lesen sie die antworten

#1 Thorsten Doerfler
05/04/2010 - 14:38 | Warnen spam
Uwe Conradi schrieb:
ich habe gerade eine Anwendung (vb.net + MS SQL Server CE Datenbank)
erstellt. Beim Testen des Installationspakets auf Win.7 als nicht Admin
kommt es zur Meldung, dass der Zugriff auf die Datenbank nicht zulàssig ist.
In den Eigenschaften des Installprojekts habe ich festgelegt, dass die
Anwendung für alle Benutzer gilt.



Diese Option besagt nur, dass für alle Benutzer eine entsprechende
Verknüpfung im Startmenü angelegt wird. Im anderen Fall bekommt nur der
installierende Benutzer eine Verknüpfung.

Wie soll ich das Entstehen dieses Problems verhindern?



Das kommt erstmal darauf an, was die Aufgabe dieser Datenbank sein soll.
Hàlt sie nur statisch Daten bereit oder soll der Benutzer auch Daten
àndern können? Wenn ersteres, reicht es aus die Datenbank Read-Only zu
öffnen und sie kann im Programmverzeichnis bleiben. Wenn der Benutzer
auch Änderungen vornehmen können soll, dann ist das Programmverzeichnis
der falsche Speicherort für diese Datenbank. Hier sind die
Anwendungsdaten für alle Benutzer die bessere Wahl.

Kann ich irgendwo im
Installationsprojekt den Zugriff auf den Programmordner oder auf die
Datenbank auf dem Zielrechner freigeben?



Das müsstest Du dann schon über eine Custom Action regeln. Im Framework
2.0 findest Du entsprechende Methoden zum Anpassen der
Zugriffsberechtigungen:

File.SetAccessControl Method
http://msdn.microsoft.com/en-us/lib...ntrol.aspx

Die Managed Custom Actions des VS Installtionsassistenten, sind aber
eher eine ekelige Angelegenheit, daher würde ich davon abraten.

Als Alternative dazu bietet sich an, die Datenbank als "Vorlage" in das
Installationverzeichnis zu kopieren und beim ersten Anwendungsstart wird
geprüft, ob bereits eine Datenbank im gemeinsamen Verzeichnis für alle
Benutzer existiert. Das Verzeichnis kannst Du ermitteln über:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

Ergànzt um "Firmenname\Anwendungsname"

Ist das nicht der Fall, kopiert Deine Anwendung die Datenbank aus dem
Programmverzeichnis dort hinein und passt die Zugriffsberechtigungen
entsprechend an, dass jeder Benutzer Schreibrechte erhàlt. Der Ersteller
hat in diesem Zweig immer volle Zugriffsrechte auf erstellte Ordner und
Dateien. Andere Benutzer können in der Standardeinstellung dort nur lesen.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen