Я создаю DLL, которая идет со сторонней программой. Независимо от того, имеет ли сторонняя программа права администратора в Windows, я не могу контролировать.
DLL должна создать каталог, но кажется, что CreateDirectory не будет работать, потому что у него нет прав администратора.
Расширение UAC не вариант, потому что я изменяю только DLL, а не стороннюю программу. Я не могу заставить пользователя щелкнуть правой кнопкой мыши на сторонней программе и «Запуск от имени администратора».
(Visual C ++ 2010)
РЕДАКТИРОВАТЬ
Я пытаюсь написать C:\ProgramData\
, Я получаю этот путь, используя SHGetFolderPath()
а также CSIDL_COMMON_APPDATA
,
использование CSIDL_APPDATA
как корень папка для любых пользовательских каталогов / файлов, в противном случае используйте CSIDL_COMMON_APPDATA
вместо. В любом случае, создайте свою собственную подпапку под выбранным корень для вашего приложения / DLL, как корень сама папка защищена от записи в. Как правило, установщик должен создать вашу подпапку с соответствующими правами, а затем приложение / DLL может получить к ней доступ по мере необходимости.
Прочитайте TEMP
переменная окружения и использовать результат для создания временных файлов и / или каталогов. использование APPDATA
для постоянных.
Обратите внимание, что по крайней мере APPDATA
зависит от пользователя.