1. 程式人生 > >VS 中引入app.manifest(c#程式在win7及以上windows版本下以管理員許可權執行方法)

VS 中引入app.manifest(c#程式在win7及以上windows版本下以管理員許可權執行方法)

開啟VS2005、VS2008、VS2010、VS2012、VS2013、VS2015工程,檢視工程資料夾中的Properties資料夾下是否有app.manifest這個檔案;如沒有,按如下方式建立:滑鼠右擊工程在選單中選擇“屬性”,點選工程屬性的“安全性”標籤,在安全性標籤頁中勾選“啟用ClickOnce安全設定”,並選擇“這是完全可信的應用程式”,儲存工程,此時在Properties下已經自動生成了app.manifest檔案。

將預設的app.manifest檔案修改為

<?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="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC 清單選項
            如果要更改 Windows 使用者帳戶控制級別,請用以下節點之一替換 
            requestedExecutionLevel 節點。

        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

            指定 requestedExecutionLevel 節點將會禁用檔案和登錄檔虛擬化。
            如果要利用檔案和登錄檔虛擬化實現向後 
            相容性,則刪除 requestedExecutionLevel 節點。
        -->
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>

  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!-- 此應用程式設計使用的所有 Windows 版本的列表。Windows 將會自動選擇最相容的環境。-->

      <!-- 如果應用程式設計使用 Windows 7,請取消註釋以下 supportedOS 節點-->
      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->

    </application>
  </compatibility>

  <!-- 啟用 Windows 公共控制元件和對話方塊的主題(Windows XP 和更高版本) -->
  <!-- <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>-->

</asmv1:assembly>

修改<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />節點即可。

配置檔案修改後,我們執行應用程式,就會首先彈出這樣一個提示框,點 Yes 後,程式才可以繼續執行。

順便說下,還可以通過一個方法瞭解到此時程式執行是不是管理員許可權:

 public bool IsAdministrator()
 {
      WindowsIdentity identity = WindowsIdentity.GetCurrent();
      WindowsPrincipal principal = new WindowsPrincipal(identity);
      return principal.IsInRole(WindowsBuiltInRole.Administrator);
 }

對於XML檔案中引用的UAC執行許可權級別,分別代表下列含義:

         asInvoker : 應用程式就是以當前的許可權執行。

         highestAvailable: 這個是以當前使用者可以獲得的最高許可權執行。

         requireAdministrator: 這個是僅以系統管理員許可權執行。

         預設情況下是 asInvoker。

         highestAvailable 和 requireAdministrator 這兩個選項都可以提示使用者獲取系統管理員許可權。那麼這兩個選項的區別在哪裡呢?

         他們的區別在於,如果我們不是以管理員帳號登入,那麼如果應用程式設定為 requireAdministrator ,那麼應用程式就直接執行失敗,無法啟動。而如果設定為 highestAvailable,則應用程式可以執行成功,但是是以當前帳號的許可權執行而不是系統管理員許可權執行。如果我們希望程式在非管理員帳號登入時也可以執行(這種情況下應該某些功能受限制) ,那麼建議採用 highestAvailable 來配置。

相關推薦

VS 引入app.manifestc#程式win7以上windows版本管理員許可權執行方法

開啟VS2005、VS2008、VS2010、VS2012、VS2013、VS2015工程,檢視工程資料夾中的Properties資料夾下是否有app.manifest這個檔案;如沒有,按如下方式建立:滑鼠右擊工程在選單中選擇“屬性”,點選工程屬性的“安全性”標籤,在安全性

vc程式管理員許可權執行方法

由於剛剛做的小程式需要使用管理員許可權執行,有時候執行的時候忘記了以管理員身份執行就無法看到正常的結果。為了讓客戶在執行的時候自動以管理員身份執行,百度一下,新增上管理員執行限制 方法一: 1找到VS2010的快捷方式:右擊——“開啟檔案位置” 找到VS2010的啟動專案d

vs2005 生成的應用程式win7管理員許可權執行

在開啟UAC的時候,在win7中執行程式預設是以一種許可權較低的方式執行的,但是在這種方式下,我們有些操作會失敗(比如修改登錄檔,監聽埠,往系統目錄寫入檔案等),要實現這些操作,就需要我們以管理員許可權執行程式了。 當然,只有在程式上右鍵,選擇“以管理員執行”就可以,不過如

vc++MCF/C++/C怎樣讓應用程式獲得或管理員許可權執行 ,ShellExecuteEX程式設計 --- 獲取管理員許可權

怎樣讓你的應用程式獲得管理員許可權:就是在執行開發工具如vc6.0 或vs2010時,要以管理員身份執行,這樣你的應用程式才可以繼承 解決:在vs2010等開發工具中雖然以管理員身份編譯運行了程式,可以獲得管理員許可權,但是當單獨點選Debug或release版時,又

使程式管理員許可權執行C++

來源網站:http://blog.csdn.net/jhui163/article/details/5873027 在看射手原始碼的時候,發現這個函式,是獲取管理員許可權的。但是不知道效果如果,先發上來大家測試下。 void GainAdminPrivileges(

C#程式管理員許可權執行

在Vista 和 Windows 7 及更新版本的作業系統,增加了 UAC(使用者賬戶控制) 的安全機制,如果 UAC 被開啟,使用者即使以管理員許可權登入,其應用程式預設情況下也無法對系統目錄、系統登錄檔等可能影響系統正常執行的設定進行寫操作。這個機制大大增強了系統的安全性,但對應用程式開發者來說,我們不

QT程式管理員許可權執行(UAC)

方案一:(僅適用於使用msvc編譯器) 在PRO檔案中新增一行指令即可, QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator'uiAc

VS2013編譯生成的應用程式管理員許可權執行

      有時候由於程式中某些功能的需要(例如修改登錄檔,讀寫c盤裡的檔案),程式需要以管理員身份執行。      在網上找了很久的資料,都是說右鍵專案,選擇“屬性”的,然後可以選擇  安全性-勾選ClickOnce安全設定什麼的,比如這篇博文,可是我找了半天也沒有找到 C

windows 7程式 請求管理員許可權執行

  windows 7 對安全方面的管理要比XP嚴格多了,但是如果你寫了一個程式需要以管理員許可權執行怎麼辦呢?  就像這樣 ok,我也是參考了很多其他人的文章 比如: 在visual stuido 2010 中的設定就是這個樣子的 當你除錯時會出這樣的對話

VS如何讓C#語言編寫的程式自動管理員身份執行

 在Vista或Win7或Win8或Win10系統上exe程式預設不是以管理員身份執行的,它會被UAC(使用者帳戶控制)阻止訪問系統某些功能,如修改登錄檔操作、操作硬碟上的檔案等。但是有時我們確實需要程式在開始執行時就是以管理員身份執行的,這時我們在VS中需進行以下操作:

leetcode:26. 刪除排序陣列的重複項C++

給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。示例 1:給定陣列 nums = [1,1,2], 函式應該返回新的長度 2, 並且原陣列 nums

LeetCode 442. 陣列重複的資料CC++、python

給定一個整數陣列 a,其中1 ≤ a[i] ≤ n (n為陣列長度), 其中有些元素出現兩次而其他元素出現一次。 找到所有出現兩次的元素。 你可以不用到任何額外空間並在O(n)時間複雜度內解決這個問題嗎? 示例: 輸入: [4,3,2,7,8,2,3,1] 輸出

倒置線性表資料的順序c++

倒置線性表中資料的順序(c++) 給LList類實現新增一個成員函式,倒置線性表中資料的順序,且演算法的執行時間為O(n) template<typename E> void LList<E>::reverse(){ Link<E> * p,*

Android API Guides 之 App Manifest8

SYNTAX: <dataandroid:scheme="string"android:host="string"android:port="string"android:path="string"android:pathPattern="string"android:pathPrefix="stri

【leetcode】從排序陣列刪除重複項C、Python解答

題目: 給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。 示例 1: 給定陣列 nums = [1,1,2], 函式應該

牛客網 劍指offer_程式設計題—— 陣列重複的數字C++

在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。 例如,如果輸入長度為7的陣列{2,3,1,0,2,5,3},那麼對應的輸出是第一個重複的數字2。 C++ class So

求一個矩陣的馬鞍點c語言實現

資料結構中的求一個矩陣的馬鞍點 請編寫一個完整的程式,如果矩陣A中存在這樣的一個元素A[i,j]滿足條件A[i,j]是第i行的值最小的元素,且又是第j列中最大的元素,則稱之為該矩陣的一個馬鞍點。 程式碼如下: #include<stdio.h> #d

LeetCode 557. 反轉字串的單詞 IIIC++

給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。 示例 1: 輸入: "Let's take LeetCode contest" 輸出: "s'teL ekat edoCteeL tsetnoc" 注意:在字串中,每個單詞由單個空格分

在楊氏矩陣查詢一個數C語言實現

  分析:楊氏矩陣的特點是:這個矩陣中的數字從左到右是遞增的,從上到下也是遞增的。知道了這個特點就好寫程式了。如有以下矩陣:     2 3 4  3 4 5     4 5 6   &nb

GDAL書籍刪除資料勘誤C#語言

GDAL書籍中關於C#版本刪除資料的時候,不能完全刪除資料,由於我對C#不瞭解導致程式碼有點問題,非常感謝@Bingoyin指出並給出修改方案。此外對於柵格影象的刪除、重新命名,向量資料的刪除和重新命名都有同樣的問題,修改方式也都一樣,具體如下。 以柵格資料為例,具體修改為: