Я знаю, что есть много подобных вопросов, таких как этот как получить% AppData% путь
Но мой другой
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
что я хотел.
Кто-нибудь знает, как это сделать? Заранее спасибо.
Основная причина вашей проблемы — запуск VS от имени администратора. Пока вы продолжаете делать это,% AppData% будет указывать на папку appdata этой учетной записи. Нет сюрпризов.
Итак, вы должны изменить свой подход. Некоторые варианты:
и так далее .. вариантов много, все зависит от того, что вы готовы изменить в своей методологии ..
в отношении четвертого: попробуйте эту вещь — найдите ярлык «Командная строка» (cmd.exe) в меню «Пуск». Щелкните правой кнопкой мыши по нему. Вы должны увидеть опцию «Запуск от имени администратора» (НЕ «Запуск от имени другого пользователя …»). Используйте ее. Когда консоль откроется, напишите: echo %APPDATA%
и проверь что это. Он должен указывать на ВАШИ данные приложения, но в строке заголовка окна вы должны увидеть Administrator:CommandPrompt
предупреждающая информация Теперь пиши start cmd.exe
, Должна появиться другая консоль администратора, доказывающая, что повышение прав распространяется на дочерние процессы. Проверьте APPDATA в новой консоли, она все равно должна быть вашей. Это было просто испытание.
Если консоль работала и распространяла высоту и переменные, то вы также можете выбрать «Запуск от имени администратора» непосредственно на значке VisualStudio. И это все.
Других решений пока нет …