我正在创建一个与第三方程序一起使用的DLL。是否第三方程序在Windows中具有管理员权限是我无法控制的。
DLL需要创建一个目录,但似乎CreateDirectory不起作用,因为它没有管理员权限。
升级UAC不是一种选择,因为我只修改DLL而不是第三方程序。我无法强制用户右键单击第三方程序和“以管理员身份运行”。
(Visual C ++ 2010)
修改
我正在写信给C:\ProgramData\
。我使用SHGetFolderPath()
和CSIDL_COMMON_APPDATA
检索该路径。
答案 0 :(得分:5)
对于任何特定于用户的目录/文件,使用CSIDL_APPDATA
作为 root 文件夹,否则请使用CSIDL_COMMON_APPDATA
。无论哪种方式,在您选择的 root 下为您的app / DLL创建自己的子文件夹,因为 root 文件夹本身不会被写入。通常,安装程序应该创建具有足够权限的子文件夹,然后app / DLL可以根据需要访问它。
答案 1 :(得分:1)
读取TEMP
环境变量,并使用结果创建临时文件和/或目录。使用APPDATA
表示持久的。
请注意,至少APPDATA
是特定于用户的。