我知道有很多类似的问题,例如how to get %AppData% path
但我的不同:
1.我有两个账户:
Admin- Administrator account
Test- Non-Administrator account
2.使用VS2013作为管理员运行我的项目,因为项目需要具有提升的权限。然后使用以下代码段获取appdata路径:
TCHAR szPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szPath)))
{
//....
}
但szPath
的实际值是C:\Users\Admin\AppData\Roaming
,而不是我想要的C:\Users\Test\AppData\Roaming
。
任何人都知道该怎么做?提前谢谢。
答案 0 :(得分:1)
问题的根本原因是将VS作为“管理员”帐户运行。只要你继续这样做,%AppData%将指向该帐户的appdata文件夹。没有惊喜。
所以,你必须改变你的方法。一些选择:
依此类推..有很多选择,一切都取决于你愿意改变你的方法论。
关于第四个:试试这个 - 在开始菜单中找到'Commandline'(cmd.exe)的快捷方式。右键单击它。您应该看到选项“以管理员身份运行”(不是“以其他用户身份运行...”)使用它。控制台打开后,写下:echo %APPDATA%
并检查它是什么。它应该指向您的appdata,但在窗口标题栏上,您应该看到Administrator:CommandPrompt
警告信息。现在写start cmd.exe
。应该弹出另一个管理控制台,证明该高程传播到子进程。检查新控制台中的APPDATA,它应该仍然是你的。那只是一个考验。
如果控制台工作并传播了提升和环境变量,那么您还应该能够直接在VisualStudio图标上选择“以管理员身份运行”。这就是全部。