Delphi vista programdata命令行访问

Delphi vista programdata命令行访问,delphi,windows-vista,Delphi,Windows Vista,我有一个将数据(original.dat)存储到文件夹C:\ProgramData的应用程序 (我将SHGetFolderPath()与CSIDL_COMMON_APPDATA.的CSIDL一起使用,以访问该文件夹) 它还需要使用参数调用命令行执行文件(myexecute.exe) c:\program files\myname\appname\myexecute.exe original.dat outputfile.dat(outputfile.dat将位于c:\ProgramData中)

我有一个将数据(original.dat)存储到文件夹C:\ProgramData的应用程序 (我将SHGetFolderPath()与CSIDL_COMMON_APPDATA.的CSIDL一起使用,以访问该文件夹)

它还需要使用参数调用命令行执行文件(myexecute.exe) c:\program files\myname\appname\myexecute.exe original.dat outputfile.dat(outputfile.dat将位于c:\ProgramData中) 它在xp上运行,但在vista上报告了错误“拒绝访问”。 它看起来像是在文件夹中创建outputfile.dat的预兆

欢迎评论

谢谢


marc

CSIDL_COMMON_APPDATA适用于所有用户,由于UAC的原因,对于非管理员用户不可写入。它在安装期间可供管理员写入,但不应在安装后使用


您应该将CSIDL_APPDATA用于当前用户的数据。

如果您需要特定的指导,生成错误的代码片段将非常有用。另外,什么版本的Delphi?这里不需要代码,只需要停止写入您没有写入权限的文件夹,正如Ken所说,vista中有一个文件夹在任何情况下都不会出现“拒绝访问”的问题?+1。我查了一下,因为它对我来说不是直观的。该链接显示:
默认情况下,此位置对于普通(非管理员、非电源)用户是只读的。如果应用程序要求普通用户对CSIDL\u COMMON\u APPDATA的特定于应用程序的子目录具有写访问权限,则应用程序必须在应用程序安装期间明确修改该子目录上的安全性。
。CSIDL\u APPDATA,相同的结果,我估计大多数与vista兼容的问题都与此有关。我只是想知道在安装我的应用程序时是否需要做些什么(我使用Inno安装程序,也许我需要在Inno脚本中做些什么)。我不希望将UAC权限升级为administrator。这不是我喜欢的方式。@monsabre刚刚发现,在InnoSetup脚本中,您可以使用{commonappdata}引用CSIDL_COMMON_APPDATA