Как получить местоположение% temp% \ Low при запуске как процесс с низким уровнем целостности - PullRequest
5 голосов
/ 21 декабря 2009

Когда процесс выполняется с низким уровнем целостности, вы не можете записать в% temp%, поэтому мне нужен способ найти путь к каталогу% temp% \ Low (без жесткого кодирования слова «Low»)

Ответы [ 4 ]

4 голосов
/ 28 сентября 2011

Раздел «Поиск местоположений записи с низкой степенью целостности» статьи «Общие сведения о Internet Explorer и работа в защищенном режиме» включает в себя следующий фрагмент:

Примечание Защищенный режим изменяет переменные среды IE. В результате функция GetTempPath () возвращает% Temp% \ Low при вызове, когда защищенный режим активен.

2 голосов
/ 21 декабря 2009

Согласно MSDN

В защищенном режиме расширения могут записывать файлы в папку под пользовательская папка UserProfile, обычно % USERPROFILE% \ AppData \ LocalLow. использование функция SHGetKnownFolderPath с флаг FOLDERID_LocalAppDataLow для получить расширенное имя папки.

SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0, 
   NULL, szPath, ARRAYSIZE(szPath));
1 голос
/ 30 сентября 2011

Если вы просто ищете временный каталог для записи, вы можете перебрать каталоги внутри каталога %temp% и попробовать записать в каждый из них.

Если UAC отключен, . должен быть первым. Если нет, то .\Low должен быть единственным.

0 голосов
/ 21 декабря 2009

Согласно MSDN

"Процессы с низким уровнем целостности могут записывать и создавать подпапки в папке% USER PROFILE% \ AppData \ LocalLow"

Не думаю, что есть какой-либо способ избежать жесткого кодирования последних двух папок.

...