我应该在哪里存储配置文件?

时间:2013-02-22 19:38:55

标签: windows delphi

我需要通过Win8在WinXP中读取和写入配置文件到Windows磁盘。他们最适合这样做的地方在哪里?看起来似乎没有ProgramData文件夹允许

procedure TfrmMain.FormCreate(Sender: TObject);
var
  path: array[0..MAX_PATH] of char;
begin
   SHGetFolderPath(0, CSIDL_COMMON_APPDATA, 0, SHGFP_TYPE_CURRENT, @path);
  AppPath:= Path;
  AppPath:= AppPath + '\Customer\';
  if not DirectoryExists(AppPath) then
   CreateDir(AppPath);
 if FileExists(AppPath + 'Customers.cst') then
 LoadFromFile(AppPath + 'Customers.cst');
end;

procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 if ListModified  then
 begin
  if MessageDlg('Save Changes?', mtWarning, [mbYes, mbNo], 0) = mrYes  then
   SaveToFile(AppPath + 'Customers.cst');
  canClose:= True;
 end
 else 
canClose:= False;
end;

1 个答案:

答案 0 :(得分:10)

CSIDL_COMMON_APPDATAdescribed as

  

包含所有用户的应用程序数据的文件系统目录。

由于它是在计算机上的所有用户之间共享,因此您需要具有管理员权限才能写入该位置。如果您希望所有用户共享您的配置,那么CSIDL_COMMON_APPDATA是适合它的地方。但是,当你来这里写作时,你需要确保你有足够的权利。

如果确实需要您的应用程序写入CSIDL_COMMON_APPDATA,那么通常的方法是在安装期间为您的应用程序创建一个目录。因为您的安装程序将升级,所以可以执行此操作。它还必须为新目录添加一个允许的ACL,以便稍后当您以标准用户身份运行时,您的应用程序可以写入该文件夹。

如果您想要存储在用户个人资料中的配置,那么您应该选择CSIDL_APPDATAdescribed as下的位置:

  

文件系统目录,用作特定于应用程序的数据的公共存储库。

由于这是在用户配置文件中,因此计算机上的每个用户都将拥有配置文件的单独副本。