2009-12-21 22 views

回答

-1

根据MSDN

“低完整性进程可以写入和创建下%USER PROFILE子文件夹%\应用程序数据\ LocalLow”

我不认为有什么办法可以避免硬编码最后两个文件夹。

2

根据MSDN

时,在保护模式下,扩展可以 文件写入以下 用户的用户配置文件夹中的文件夹,通常 %USERPROFILE%\应用程序数据\ LocalLow。使用 SHGetKnownFolderPath函数与 FOLDERID_LocalAppDataLow标志到 获取扩展文件夹名称。

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

获取本地应用程序数据但不是临时低... – 2009-12-21 16:24:26

+0

虽然这不是对您的问题的直接答案,但它似乎是唯一安全的文件夹,您可以在不对路径进行硬编码的情况下获得。我会使用它并在那里创建临时文件夹。 (当然,这会让您更负责管理文件的最终删除)。 – Danra 2011-09-30 20:58:42

4

中的"Finding Low Integrity Write Locations" section “了解和保护模式Internet Explorer的工作” 的文章包括以下珍闻:

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

+0

我相信这是一个IE浏览器唯一的东西... – Anders 2011-09-28 20:37:42

1

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

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

+0

有趣的是,也许操作系统照顾给你%temp%environemnt变量的Temp \ Low路径,所以GetTempPath()返回正确的路径?我没有测试它。但是,这不*直接与UAC相关。 UAC不会始终以高完整性令牌运行 - 但即使禁用UAC,也可以创建低完整性的进程。 – Danra 2011-09-30 21:01:50

相关问题