【发布时间】:2010-12-28 17:46:48
【问题描述】:
当进程以低完整性级别运行时,您无法写入 %temp%,因此我需要一种方法来找到 %temp%\Low 目录的路径(无需对“Low”一词进行硬编码)
【问题讨论】:
标签: windows windows-7 windows-vista uac
当进程以低完整性级别运行时,您无法写入 %temp%,因此我需要一种方法来找到 %temp%\Low 目录的路径(无需对“Low”一词进行硬编码)
【问题讨论】:
标签: windows windows-7 windows-vista uac
【讨论】:
根据MSDN
在保护模式下,扩展程序可以 将文件写入下面的文件夹 用户的 UserProfile 文件夹,通常 %userprofile%\AppData\LocalLow。采用 SHGetKnownFolderPath 函数 FOLDERID_LocalAppDataLow 标志 获取展开后的文件夹名称。
SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0,
NULL, szPath, ARRAYSIZE(szPath));
【讨论】:
“理解和在保护模式下工作 Internet Explorer”一文的"Finding Low Integrity Write Locations" section 包含以下花絮:
注意 保护模式会修改 IE 的环境变量。因此,在保护模式处于活动状态时调用 GetTempPath() 函数会返回 %Temp%\Low。
【讨论】:
GetTempPath 在我的情况下返回 `C:\Users\%username%\AppData\Local\Temp` 以表示低完整性进程。
如果您只是在寻找要写入的临时目录,则可以遍历 %temp% 目录中的目录并尝试写入每个目录。
如果 UAC 被禁用,. 应该是第一个。如果没有,.\Low 应该是唯一的。
【讨论】: