vista programdata命令行访问

mon*_*bre 2 delphi windows-vista

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

它还需要使用参数c:\ program files\myname\appname\myexecute.exe original.dat outputfile.dat调用命令行执行文件(myexecute.exe)(outputfile.dat将在C:\ ProgramData中)它工作了在xp上,但它在vista上报告错误'访问被拒绝'.它看起来好像是在文件夹中创建outputfile.dat.

欢迎任何评论

谢谢

Ken*_*ite 7

CSIDL_COMMON_APPDATA适用于所有用户,并且由于UAC而无法为非管理员用户写入.在安装过程中,它对管理员来说是可写的,但之后不应该使用.

您应该使用CSIDL_APPDATA代替当前用户的数据.

  • +1.[一些Microsoft使用CSIDL_COMMON_APPDATA的指南](http://msdn.microsoft.com/en-us/library/ms995853.aspx).我查了一下因为它对我来说不直观.该链接显示:`默认情况下,此位置对于普通(非管理员,非电源)用户是只读的.如果应用程序要求普通用户具有对CSIDL_COMMON_APPDATA的特定于应用程序的子目录的写访问权限,则应用程序必须在应用程序设置期间显式修改该子目录的安全性. (2认同)