程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Windows 7開發:安裝程序檢測 - 本機

Windows 7開發:安裝程序檢測 - 本機

編輯:關於.NET

目標

在本實驗中,您將學習如何:

確定 Windows Vista 及更高版本上與 安裝程序檢測相關的問題

修復安裝程序檢測問題

系統要求

要完成本實驗,您必須擁有以下軟件:

Microsoft Visual Studio 2008 SP1

Microsoft Windows 7

練習 #1 :安裝程序檢測問題

在本練習中,您將看到一個被錯誤地 標識為安裝程序的“舊”可執行文件,而實際上它只是一個不需要管理權限的普 通應用程序。

任務 1 – 確保 UAC 處於活動狀態

在本任務中,必須確 認用戶賬戶控制 (User Account Control, UAC) 處於活動狀態。只有在這種情況下才能發生 問題。

1. 單擊“開始”:

a. 單擊“控制面板”。

b. 單擊 User Accounts and Family Safety 。

c. 單擊 User Accounts 。

d. 單擊 Change User Account Control Settings 。將出現一個如下的對話框。

幫助

還有一種方法可選,單擊“開始”,單擊“運行 ”,鍵入“ UAC ”。然後單擊 Change User Account Control Settings 。

2. 確保 滑塊位於如圖所示的默認級別(也可以將其設置為其他級別,但不能是 Never notify ,這 將禁用 UAC )。

3. 單擊 OK 。

任務 2 :確定問題

1. 使用 Windows 資源管理器導航到 BrokenStockUpdater\Debug 文件夾。

2. 切換到中或大圖標視圖,您會發現 BrokenNativeStockUpdater.Exe 文件上方多了一個盾牌圖標,如下圖所示:

3. 雙擊 該文件確認出現 UAC 提升權限提示。

這不是我們希望出現的行為,這一點從文件名 中包含的“ update ”就可以看出(它是一個不帶清單的 32 位應用程序)。帶 有“ setup ”、“ install ”和“ update ”的文件都 是同樣的道理。

練習 #2 :解決問題

上一個任務中確定的問題可以通過添加 一個外部或內部清單加以解決。

任務 1 :添加一個外部清單

1. 使用 Windows 資源管理器導航到 BrokenStockUpdater\Debug 文件夾。

a. 右鍵單擊空白 位置。

b. 指向“新建”。

c. 單擊“文本文檔”。

d. 將其命名為 BrokenNativeStockUpdate.Exe.manifest 。

注意,只要出現 帶有該名稱的文件,即使文件為空,盾牌圖標也會消失:

2. 使用記事本或者其他文本編輯器打開清單文件。

3. 輸入以下文本:

XML

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft- com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"  xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <assemblyIdentity version="1.0.0.0" name="StockUpdater"/>
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
     <security>
      <requestedPrivileges xmlns="urn:schemas- microsoft-com:asm.v3">
        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
       </requestedPrivileges>
    </security>
   </trustInfo>
</asmv1:assembly>

幫助

關鍵信息是 level 屬性。值 asInvoker 表明 .exe 文件使用與創建人(例如, Windows 資源管理器)相同的權限運行,這表示這個 .exe 文件不是安裝程序,而是一個常規程序。 另一個相關級別是 requireAdministrator ,表示該 .exe 文件需要管理權限才能正常運行 。例如,這是一個實際的安裝程序並需要訪問授權位置,如 \Windows\System32 文件夾或 HKEY_LOCAL_MACHINE\Software 鍵。

4. 保存文件。

5. 退出文本編輯器。

6. 雙擊 .exe 文件驗證更改有效。

這一次,您應該看不到 UAC 提升權限提示,應用程序可以正常運行。

任務 2 :添加嵌入清單

1. 使用 Visual Studio 2008 打開位於 BrokenStockUpdater 文件夾中的 BrokenStockUpdater.sln 解決方案文件。

2. 研究 BrokenNativeStockUpdater 項目。

該項目沒有清單,要驗證這一點:

3. 單擊 Project 菜單。

4. 單擊 Properties 。

5. 在左列中,找到名為 Linker 的節點。

6. 打開它並找到名為 Manifest File 的節點。

在右側窗格中,將 Generate Manifest 設置為 No ,如以下截屏所示:

幫助

Visual Studio 2008 的默認設置是生成清單文件。

7. 將 Generate Manifest 設置更改為 Yes 。

8. 使用 UAC Execution Level 設置來設置需要的級別( asInvoker 、 requireAdministrator 或 highestAvailable ):

9. 在左側窗格中,打開名為 Manifest Tool 的節點。

10. 單擊名為 Input and Output 的節點。

右側窗格中的 Embed Manifest 設置控制是將清單作為 Win32 資源嵌入還是保留為一個 松散的文件(與上一個任務一樣)。

11. 選擇 Yes 將清單作為資源嵌入,使該執行文件不需要攜帶其他清單文件,如下面的 截屏所示:

12. 重建解決方案並刪除上一個任務中的清單。

確保盾牌按鈕已經消失,並且在雙擊應用程序時不會出現任何 UAC 提升權限提示。

修復的解決方案位於 FixedStockUpdater 文件夾的 FixedStockUpdater.sln 中。

小結

在本實驗中,您學習了安裝程序檢測的工作原理。還了解了文件名中包含特定關鍵字的 32 位映像可能導致不必要的權限提升。也可能出現相反的問題,需要提升權限的安裝程序無 法自動提升。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved