2009-12-21 25 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

相關問題