我需要通过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;
CSIDL_COMMON_APPDATA
is 被形容为 http://msdn.microsoft.com/en-gb/library/windows/desktop/bb762494.aspx#CSIDL_COMMON_APPDATA:
包含所有用户的应用程序数据的文件系统目录。
由于它在计算机上的所有用户之间共享,因此您需要具有管理员权限才能写入该位置。如果您希望所有用户共享您的配置,那么CSIDL_COMMON_APPDATA
是适合它的地方。但是,当您在那里写作时,需要确保您拥有足够的权利。
如果您确实需要将您的申请写至CSIDL_COMMON_APPDATA
那么通常的方法是在安装过程中为您的应用程序创建一个目录。因为您的安装程序将运行提升,所以它可以做到这一点。它还必须向新目录添加许可 ACL,以便您的应用程序稍后可以在以标准用户身份运行时写入该文件夹。
如果您想要将配置存储在用户配置文件中,那么您应该在下面选择一个位置CSIDL_APPDATA
, 被形容为 http://msdn.microsoft.com/en-gb/library/windows/desktop/bb762494.aspx#CSIDL_APPDATA:
用作特定于应用程序的数据的公共存储库的文件系统目录。
由于它位于用户配置文件中,因此计算机上的每个用户都将拥有配置文件的单独副本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)