当进程以低完整性级别运行时,不能写入%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下编写和创建子文件夹”
我不认为有任何方法可以避免硬编码最后两个文件夹。