Когда процесс выполняется с низким уровнем целостности, вы не можете записать в% temp%, поэтому мне нужен способ найти путь к каталогу% temp% \ Low (без жесткого кодирования слова «Low»)
Раздел «Поиск местоположений записи с низкой степенью целостности» статьи «Общие сведения о Internet Explorer и работа в защищенном режиме» включает в себя следующий фрагмент:
Примечание Защищенный режим изменяет переменные среды IE. В результате функция GetTempPath () возвращает% Temp% \ Low при вызове, когда защищенный режим активен.
Согласно MSDN
В защищенном режиме расширения могут записывать файлы в папку под пользовательская папка UserProfile, обычно % USERPROFILE% \ AppData \ LocalLow. использование функция SHGetKnownFolderPath с флаг FOLDERID_LocalAppDataLow для получить расширенное имя папки.
SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0, NULL, szPath, ARRAYSIZE(szPath));
Если вы просто ищете временный каталог для записи, вы можете перебрать каталоги внутри каталога %temp% и попробовать записать в каждый из них.
%temp%
Если UAC отключен, . должен быть первым. Если нет, то .\Low должен быть единственным.
.
.\Low
"Процессы с низким уровнем целостности могут записывать и создавать подпапки в папке% USER PROFILE% \ AppData \ LocalLow"
Не думаю, что есть какой-либо способ избежать жесткого кодирования последних двух папок.