我的程序有点问题......
我必须使用应用程序数据创建一个文件,但我不知道如何访问%USER%
或%APPDATA%
目录......
我尝试使用应用程序文件夹,但是如果我在D:\Program Files\(Organization)\(APPName)
中安装应用程序,我无法在此目录中编写新文件,如果我没有管理员权限,我可以阅读或修改。
所以,问题是:如何使用应用程序访问%USER%文件夹或获取ADMIN权限... PS。:我在C ++ Builder中使用VCL
答案 0 :(得分:2)
一种经典的方法是使用getenv读取环境变量:
char *user = getenv("USER");
char *appdata = getenv("APPDATA");
关于用户权限以及在这些位置执行文件读/写/创建,您当然可以在应用程序运行的用户文件夹中运行。在其他文件夹中,您需要以目标用户或管理员身份运行它。 此外,在程序文件或程序文件(x86)中安装应用程序后,系统将不允许您在那里写入。安装在“trustedinstaller”用户凭据下执行,最终用户权限在安装期间为“当前用户”或“所有用户”设置。
希望这有帮助。
答案 1 :(得分:2)
假设这是纯Windows问题,您应该使用SHGetSpecialFolderPath
。
CSIDL_PROFILE
以获得相当于%USERPROFILE%
。CSIDL_APPDATA
以获得相当于%APPDATA%
。请注意,基于CSIDL的函数的文档有点可怕,因为它们讨论的功能不受支持或弃用。相反,他们会敦促您使用SHGetKnownFolderPath
。如果您的程序永远不需要在XP上运行,那就没问题。如果是这种情况,请继续使用SHGetKnownFolderPath
。否则,请使用基于CSIDL的选项。