2011-10-08 174 views
7

Windows 7使用自動機制來檢測應用程序是否需要提升管理員權限。或者應用程序本身有一個清單。找出應用程序是否需要管理員權限

有沒有一種方法來找出程序化指定的應用程序是否需要提升管理員權限? 我不想開始找出它。

謝謝;)。

+1

請勿將您的標題添加爲「C#」。在[so]上,這就是我們使用標籤的原因。 –

+2

好的,謝謝你的糾正。我會在進一步的問題中記住這一點;) – mmiccc

回答

4

確實只有一種方法可以告訴Windows,程序需要升級,並且通過清單文件。清單文件可以嵌入程序集(exe/dll)中,也可以位於名爲<YOUR_APP>.exe.manifest的單獨文件中。這是唯一的方法,也許是唯一可以安全檢查的方法。正式。

Windows還包含一個用於應用程序兼容性的巨大數據庫。如果微軟已經測試了一個應用程序,並發現它在操作系統升級發生時中斷,他們有時會在數據庫中創建一個條目來實質上破解該應用程序。有時候他們會說當前的操作系統版本,有時候他們會自動以管理員身份運行,有時他們會做很多其他的事情。您可以使用Application Compatibility Toolkit查看數據庫。我不知道是否有官方的方式來通過代碼查詢數據庫。 This blog post談論了一個博客作出的工具,但顯然從未發佈。

最後一個自動提升機制是試圖確定該應用是否爲安裝程序的算法。 According to MSDN這些屬性進行檢查:

  • 文件名包括像關鍵字「安裝」,「設置」,「更新」等
  • 關鍵詞在以下版本資源領域:供應商,公司名稱,產品名稱,文件描述,原始文件名, 內部名稱和導出名稱。
  • 嵌入在可執行文件中的並排清單中的關鍵字。
  • 可執行文件中鏈接的特定StringTable條目中的關鍵字。
  • 可執行文件中鏈接的RC數據中的關鍵屬性。
  • 可執行文件中字節的目標序列。

關鍵字和字節序列是從各種安裝程序技術觀察到的常見特徵導出的。

最後,應用程序可以作爲普通用戶運行,但是可以運行spawn a child process that requires elevated privileges。我不知道是否真的有辦法實際檢測到反編譯應用程序本身的缺點。

+0

我想首先感謝你爲這個漫長而詳細的答案! 好吧,我要實現上述算法並查找清單文件。它似乎涵蓋了許多情況。 非常感謝:) – mmiccc

相關問題