2010-12-05 1 views
4

Ich habe ein wenig gelesen, dass eine .NET 2.0 SQL CE-Datenbank in das Programmdateien-Verzeichnis, in dem die Anwendung installiert ist, eine schlechte Idee ist. Ich habe folgenden Fehler:Zugriff auf SQL CE-Datenbank im Verzeichnis Programme

Der Zugriff auf die Datenbankdatei ist nicht zulässig. [Dateiname = C: \ Programme (x86) \ MyCompanyName \ MyApplicationName \ MyCEDatabaseName.sdf]

Also ich habe gehört, legte es in gemeinsame Anwendungsdateien .... Ich bin mir nicht sicher, wo das ist, und ich habe gelesen, dass das Installationsprogramm die Datei dort mit denselben Berechtigungen löschen kann. Ich habe auch gelesen, dass Leute ihre Datei dorthin verschoben haben und Probleme hatten.

Ist es möglich, die ACLs der Datei im Verzeichnis der Programmdateien zu ändern, wenn das Installationsprogramm sie dort ablegt? Ich habe bereits Haken in der Anwendung von der MSI, um Konfigurationsoptionen zu sammeln und einzustellen. Ich habe kein gutes Beispiel dafür gefunden, wie man die Berechtigungen für EINE Datei ändert.

Dann habe ich gelesen, um es in den Anwendungsdaten des Benutzers zu speichern, aber wenn Sie die Anwendung für alle installieren, wo wird die Datei gehen?

Danke für Ihre Zeit .... verwirrt.

Antwort

2

Ich nehme an, Sie verwenden ein MSI-Paket. In diesem Fall können Sie CommonAppDataFolder verwenden, das in "C: \ ProgramData" aufgelöst wird.

Dies ist jedoch auch ein Standort pro Computer, daher sind dieselben Berechtigungen erforderlich wie für Programme. Ich glaube, Sie haben vom Anwendungsdatenordner (AppDataFolder) gehört, der ein Standort für jeden Benutzer ist (etwa "C: \ Users \\ AppData \ Roaming"). Es hat keine Berechtigungsprobleme.

Wenn Sie einen pro-Maschine-Standort eine Lösung verwenden mögen, ist es, die LockPermissions Tabelle zu verwenden: http://msdn.microsoft.com/en-us/library/aa369774(VS.85).aspx

Das ist ein bisschen kompliziert, weil alle Berechtigungs-Flags. Also, wenn Ihr Setup-Authoring-Tool für das Festlegen von Berechtigungen keine Unterstützung bieten, schlage ich einen einfacheren Ansatz: Verwenden Sie xcacls.exe als benutzerdefinierte Aktion: http://support.microsoft.com/kb/318754

Auf diese Weise alle Benutzer Zugriff auf die Datenbankdatei gewinnen.

Verwandte Themen