如何以低完整性进程运行时获取%temp%\ Low的位置

时间:2009-12-21 13:04:32

标签: windows windows-7 windows-vista uac

当进程以低完整性级别运行时,您无法写入%temp%,因此我需要一种方法来查找%temp%\ Low目录的路径(不使用“低”字硬编码)< / p>

4 个答案:

答案 0 :(得分:4)

“在保护模式下了解和使用Internet Explorer”的"Finding Low Integrity Write Locations" section文章包含以下内容:

  

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

答案 1 :(得分:2)

根据MSDN

  

在保护模式下,扩展程序可以   将文件写入下面的文件夹   通常是用户的UserProfile文件夹   %USERPROFILE%\应用程序数据\ LocalLow。使用   SHGetKnownFolderPath函数用   FOLDERID_LocalAppDataLow标志为   获取展开的文件夹名称。

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:-1)

根据MSDN

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

我认为没有办法避免硬编码最后两个文件夹。