如何获得%temp%\ Low的位置作为低整合度过程运行时

当进程以低完整性级别运行时,不能写入%temp%,所以我需要find%temp%\ Low目录的path(不用硬编码“Low”)

“了解和使用受保护模式的Internet Explorer”文章的“查找低完整性写入位置”部分包括以下内容:

注意保护模式修改IE的环境变量。 因此,在保护模式处于活动状态时调用GetTempPath()函数时会返回%Temp%\ Low。

根据MSDN

处于保护模式时,扩展可以将文件写入用户UserProfile文件夹下的文件夹,通常为%userprofile%\ AppData \ LocalLow。 使用带有FOLDERID_LocalAppDataLow标志的SHGetKnownFolderPath函数来获取扩展的文件夹名称。

SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0, NULL, szPath, ARRAYSIZE(szPath)); 

如果您只是在寻找要写入的临时目录,则可以遍历%temp%目录中的目录并尝试写入每个目录。

如果UAC被禁用, . 应该是第一个。 如果不是, .\Low应该是唯一的一个。

根据MSDN

“低完整性进程可以在%USER PROFILE%\ AppData \ LocalLow下编写和创建子文件夹”

我不认为有任何方法可以避免硬编码最后两个文件夹。