2011-06-16 84 views
-2

如何在啓用UAC的情況下獲取受保護的寫入文件夾列表? 需要此信息的進程與管理權限(安裝程序)一起啓動。獲取受UAC保護的文件夾列表

+0

你贏了假設它是「鬆散在C:的根目錄下」(即,不在C:下的某個文件夾中)並且「ProgramF iles「 - 其確切位置取決於您的安裝。也可能是Windows文件夾。你問,因爲你想讓你的代碼做一些不同的事情嗎?更好地嘗試非提升,然後捕獲AccessDenied並在這種情況下做一些事情。 – 2011-06-16 17:25:18

回答

8

UAC不保護文件夾。 UAC從用戶的訪問令牌中剝離管理員SID,將其減少爲普通受限制(「普通」)用戶。應用程序可以通過清單請求提升 - 然後整個流程使用管理令牌運行。

如果啓用了UAC的文件夾不可寫入,這意味着設置了NTFS安全性,以便普通用戶無法寫入,但管理員可以進行寫入。作爲一種補救措施,要麼更改這些文件夾的權限,要麼提升您的應用程序(或重新設計它,以便將其寫入常規用戶可以訪問的位置)。

如果你的意思是UAC虛擬化(寫嘗試重定向從系統領域到用戶配置文件):here是從我抄以下特徵很好的說明:

  • 虛擬化僅啓用:
    • 32位互動過程
    • 管理員可寫的文件/文件夾和註冊表項
  • 虛擬化是禁用的:
    • 64位進程
    • 非交互式進程
    • 流程,冒充
    • 內核模式呼叫者
    • 可執行文件有requestedExecutionLevel
1

據我所知,沒有API的方式來做到這一點。要做到這一點,你必須嘗試寫入每個文件夾,看看你是否有任何例外。爲了進一步複雜化問題,您可能會觸發文件虛擬化,在這種情況下您可以編寫文件,但它會轉到其他位置。