Lokale Datenbank im ApplicationFolder abgelegt, nun keine Berechtigung darauf

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von bk__.

    Lokale Datenbank im ApplicationFolder abgelegt, nun keine Berechtigung darauf

    Hallo zusammen,
    ich habe ein Programm mit einer lokalen Datenbank erstellt.
    Die Datenbank wird nach der Installation der Setup.exe im ApplicationFolder, sprich C:\Program Files (x86)\MeinProgramm\Datenbank.sdf, abgelegt.
    Das Problem ist jedoch, wenn ich (als normaler Client, ohne lokalen Admin Rechte) mit dem Programm auf die Datenbank zugreifen möchte, sagt er mir, dass er nicht berechtigt sei, irgendetwas auf dieser Datenbank zu tun.
    Führe ich mein Programm als Administrator aus, dann gehts.

    Jetzt ist die Frage: Gibt es eine Möglichkeit bei der Erstellung des Setups vom Programm bestimmte Berechtigungen zu geben?
    Ist überhaupt die Datenbank am richtigen Ort, wenn sie auf dem "Application Folder" ist? Wo würdet Ihr die lokalen Datenbanken ablegen?

    Vielen Dank bereits im Voraus!
    LG BK__

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „bk__“ ()

    Nutze ggf. das AppData-Verzeichnis.

    VB.NET-Quellcode

    1. Dim path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

    VB.NET-Quellcode

    1. Dim path = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    bk__ schrieb:

    C:\Program Files (x86)

    'Daten' haben hier nichts zu suchen.

    bk__ schrieb:

    Ist überhaupt die Datenbank am richtigen Ort, wenn sie auf dem "Application Folder" ist?

    NEIN!

    bk__ schrieb:

    Wo würdet Ihr die lokalen Datenbanken ablegen?

    Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) oder direkt Application.CommonAppDataPath

    bk__ schrieb:

    @RodFromGermany
    @xtts02

    Besten Dank für eure Antworten. Ich werde CommonApplicationData nehmen, jedoch wo sage ich, dass er bei der Installation die Datenbanken nach CommonApplicationData kopiert?

    Hallo.
    Das sollte mit einem Setup Tool kein Problem sein.
    Ich benutze gerne Innosetup, da gibt es Konstanten für solche Pfade.
    in dem Beispiel wäre es dann : {commonappdata}

    Gruß
    @RodFromGermany
    @xtts02

    @Megarle Vielen Dank für deine Antwort.

    Nun habe ich es geschafft, dass die Datenbank bei der Installation auf commonappdata abgelegt wird, sprich C:\programdata\MeinProgramm\Datenbank.sdf.

    Jedoch tut dies immer noch nicht. Der normale Benutzer hat nur "Lesen, Ausführen" Berechtigung, aber keine "Ändern" Berechtigung. Warum?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „bk__“ ()

    Vielleicht versuchst Du es mit:

    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

    Da dann das Unterverzeichnis für Dein Prog erstellen, und Deine Datenbank reinschubsen.

    Bei InnoSetup ist das {userappdata}. Wennde das Dir definierst, kannst Du Zugriffsrechte angeben.
    @us4711
    Vielen Dank für deine Antwort.
    Es ist schon komisch. Anscheinend ist es gar nicht möglich den Setup so zu konfigureren, dass die Datenbanken auf dem Pfad "C:\ProgramData\MeinProgram\datenbank.sdf" mit "Änder" Berechtigung abgelegt werden. Wenn die einzige Lösung die ApplicationData ist, dann kann ich dies auch mit Visual Studio Setup lösen, denn %appdata% hat generell die "Änder" Berechtigung (für nicht Admin Clients)

    bk__ schrieb:

    auf dem Pfad
    Existiert dieser Pfad überhaupt?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Seit Windows Vista ist dieses Verzeichnis %programdata% gegen Datenänderungen geschützt, eben um Viren und anderen bösen Buben eine Manipulation der dort ablegenen EXEs, CONFIGs, INIS und so weiter tunlichst zu erschweren.

    Gleichzeitig wurden die Strukturen %appdata% und %commonappdata% eingeführt, um dem geplagten Programmierer andere Möglichkeiten zu eröffnen.

    Es gibt sogar Leute, die ihre Daten in Eigene Dateien" ablegen ...