windows - Hvor skal man placere databasefiler, når man implementerer filbaseret databaseapp?

Indlæg af Hanne Mølgaard Plasc

Problem



Hvis du implementerer en app, der bruger en filbaseret database som SQLite eller Access-MDB, hvor skal databasefiler udleveres til på en maskine, idet billedet skal have fuld adgang til denne placering?


Ikke MS-retningslinjerne siger, at mappen \%PROGRAMFILES\% kun skal indeholde skrivebeskyttede applikationsfiler?


Hvor skal databasefiler placeres? I mappen \%APPDATA\%?

Bedste reference


Du bør helt sikkert ikke bruge Program Files -kataloget længere til at gemme dynamisk information.


Denne Windows Blog Brugerkonto Kontrol Data Omdirigering giver et godt sammendrag: [4]



  Sørg for, at du ikke kører hardkod, når du har bestemt de relevante steder. Brug i stedet en af ​​følgende programmeringsmodeller og API'er til at hente de korrekte stier i specifikke Windows-kendte mapper:

  
  C/C ++ native applikationer: Brug SHGetKnownFolderPath-funktionen, der henter den fulde sti til en kendt mappe, der er identificeret af mappen 's KNOWNFOLDERID, en GUID-parameter, der angiver det kendte sted, du gerne vil opnå:

  
  

      
  • FOLDERID\_ProgramData - Fælles programdatakatalog til alle brugere

  •   
  • FOLDERID\_LocalAppData - Per-user programdatakatalog (ikke-roaming)

  •   
  • FOLDERID\_RoamingAppData - Per-user programdatakatalog (roaming)

  •   

  
  Administreret kode: Brug funktionen System.Environment.GetFolderPath. GetFolderPath tager en parameter, der angiver den kendte placering, du gerne vil hente:

  
  

      
  • Environment.SpecialFolder.CommonApplicationData - Fælles programdatakatalog til alle brugere

  •   
  • Environment.SpecialFolder.LocalApplicationData - Per-user programdatakatalog (ikke-roaming)

  •   
  • Environment.SpecialFolder.ApplicationData - Per-user programdatakatalog (roaming)

  •   

  
  Hvis ingen af ​​ovennævnte muligheder er tilgængelige, skal du bruge miljøvariablen:

  
  

      
  • \% ALLUSERSPROFILE\% - Fælles programdatakatalog til alle brugere

  •   
  • \% LOCALAPPDATA\% - Per-user programdatakatalog (ikke-roaming) - Windows Vista eller senere

  •   
  • \% APPDATA\% - Per-user programdatakatalog (roaming) - Windows Vista eller senere

  •