我需要通过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;
Run Code Online (Sandbox Code Playgroud)
Dav*_*nan 10
CSIDL_COMMON_APPDATA被描述为:
包含所有用户的应用程序数据的文件系统目录.
由于它在计算机上的所有用户之间共享,因此您需要具有管理员权限才能写入该位置.如果您希望所有用户共享您的配置,那么CSIDL_COMMON_APPDATA它就是正确的位置.但是,当你来这里写作时,你需要确保你有足够的权利.
如果确实需要应用程序写入,CSIDL_COMMON_APPDATA那么通常的方法是在安装期间为应用程序创建目录.因为您的安装程序将升级,所以可以执行此操作.它还必须为新目录添加一个允许的ACL,以便稍后在以标准用户身份运行时,您的应用程序可以写入该文件夹.
如果您需要存储在用户配置文件中的配置,则应选择下面的位置CSIDL_APPDATA,如下所示:
文件系统目录,用作特定于应用程序的数据的公共存储库.
由于这是在用户配置文件中,因此计算机上的每个用户都将拥有配置文件的单独副本.
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |