AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme Wo müssen Applikationsdaten unter Win 7 gespeichert werden?
Thema durchsuchen
Ansicht
Themen-Optionen

Wo müssen Applikationsdaten unter Win 7 gespeichert werden?

Ein Thema von Rolf Fankhauser · begonnen am 29. Mär 2012 · letzter Beitrag vom 29. Mär 2012
Antwort Antwort
Rolf Fankhauser

Registriert seit: 21. Mai 2010
Ort: Basel
4 Beiträge
 
#1

Wo müssen Applikationsdaten unter Win 7 gespeichert werden?

  Alt 29. Mär 2012, 13:24
Betriebssystem: Win 7
Hallo alle zusammen,

Ich möchte meine Delphi-Applikation Win 7-konform machen. Verschiedene Daten-Files, die die Applikation benötigt, werden immer noch im Programm-Ordner abgelegt.

Die Empfehlungen von Microsoft im Dokument "Windows® 7 Client Software Logo"
sind folgende:
  • All application data that must be shared
    among users on the computer should be
    stored within ProgramData
  • All application data exclusive to a specific user
    and not to be shared with other users of the
    computer must be stored in
    Users\<username>\AppData

Diese Angaben scheinen mir etwas ungenau.

Da ich meine Applikation noch unter XP entwickle, habe ich nur eine VM mit Win 7 zur Verfügung, wo ich die Installation austeste. Bei diesem Win 7 besteht das Verzeichnis ProgramData aus alles gelockten Verzeichnissen (ausser Microsoft). Die anderen Verzeichnisse kann man nicht öffnen (access denied).

Kann mir jemand sagen, wo man die Daten genau hinschreiben muss?
z.B. Verzeichnis [App-Name] unter ProgramData oder
Verzeichnis [App-Name] unter C:\ProgramData\Application Data\ oder....

Vielen Dank für euere Hilfe!

Rolf
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Wo müssen Applikationsdaten unter Win 7 gespeichert werden?

  Alt 29. Mär 2012, 13:32
Do wo sie auch schon unter Windows XP hingehört haben. Ich nehme mal an, du hast dein Programm unter XP noch nie als normaler Benutzer ausgeführt. Hol dir mit den SpecialFolder Funktionen das Appdata Verzeichnis und sie sollten da landen, wo sie unter dem jeweiligen Betriebsystem hingehören.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Wo müssen Applikationsdaten unter Win 7 gespeichert werden?

  Alt 29. Mär 2012, 14:54
Wenn SharedData genutzt werden soll, dann muss in ProgramData ein Ordner mit passenden Rechten angelegt werden (wenn alle Benutzer dort schreiben soll).
Lesend ist kein Problem.

Wie Luckie schon schreibt, nutze die API Funktionen und die Ordnerpositionen zu ermitteln.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Rolf Fankhauser

Registriert seit: 21. Mai 2010
Ort: Basel
4 Beiträge
 
#4

AW: Wo müssen Applikationsdaten unter Win 7 gespeichert werden?

  Alt 29. Mär 2012, 18:19
Danke Luckie und generic für eure rasche Antwort!

Nur kann ich diese API-Funktionen nicht finden. Jedenfalls finde ich nichts unter SpecialFolder und AppData, auch nicht in der Windows SDK. Ich nehme an, dass es unter Windows Environment-Parameter gibt, die entsprechend gesetzt sind.
Ich kenne von Inno Setup entsprechende Konstanten wie {commonappdata} und {userappdata}, aber weiss nicht, wie man diese in Delphi oder C++Builder abruft.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

AW: Wo müssen Applikationsdaten unter Win 7 gespeichert werden?

  Alt 29. Mär 2012, 18:23
SHGetFolderPath oder SHGetKnownFolderPath sind Deine Freunde. Dazu muss die Unit SHFolder eingebunden werden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: Wo müssen Applikationsdaten unter Win 7 gespeichert werden?

  Alt 29. Mär 2012, 18:24
Zitat:
Jedenfalls finde ich nichts unter SpecialFolder und AppData,
Nicht?

Hier im Forum suchenSpecialFolder AppData
Hier im Forum suchenGetSpecialFolderLocation
...

[edit]
zu lahm (ich wünschte mir, wir hätten eine RedBox)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Wo müssen Applikationsdaten unter Win 7 gespeichert werden?

  Alt 29. Mär 2012, 18:27
[QUOTE=himitsu;1159293]
Zitat:
[edit]zu lahm (ich wünschte mir, wir hätten eine RedBox)
Die ist mit Daniel in Paris. Ich hoffe, er lässt sie nicht vom Eiffelturm fallen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Wo müssen Applikationsdaten unter Win 7 gespeichert werden?

  Alt 29. Mär 2012, 19:04
Du kannst die Funktion von Luckie verwenden:
http://michael-puff.de/Programmierun.../HOMEDIR.shtml
Delphi-Quellcode:
function GetShellFolder(CSIDL: integer): string;
var
  pidl : PItemIdList;
  FolderPath : string;
  SystemFolder : Integer;
  Malloc : IMalloc;
begin
  Malloc := nil;
  FolderPath := '';
  SHGetMalloc(Malloc);
  if Malloc = nil then
  begin
    Result := FolderPath;
    Exit;
  end;
  try
    SystemFolder := CSIDL;
    if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then
    begin
      SetLength(FolderPath, max_path);
      if SHGetPathFromIDList(pidl, PChar(FolderPath)) then
      begin
        SetLength(FolderPath, length(PChar(FolderPath)));
      end;
    end;
    Result := FolderPath;
  finally
    Malloc.Free(pidl);
  end;
end;
Bsp.:
Delphi-Quellcode:
uses
  ..., Windows, ShlObj, ActiveX;

...

var
  path: String;
begin
  path := GetShellFolder(CSIDL_APPDATA);
  path := IncludeTrailingPathDelimiter(path);
  ShowMessage(path);
end;
Liste aller CSIDL-Konstanten:
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

AW: Wo müssen Applikationsdaten unter Win 7 gespeichert werden?

  Alt 29. Mär 2012, 19:09
Zitat von MSDN:
[SHGetSpecialFolderLocation is not supported and may be altered or unavailable in the future. Instead, use SHGetFolderLocation.]
Außerdem ist es doch vergleichsweise umständlich gegenüber den SHGetFolderPath-Varianten (OK, früher ging das nicht anders, aber deshalb muss man ja nichts Altes verwenden).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz