VS 中引入app.manifest(c#程式在win7及以上windows版本下以管理員許可權執行方法)
將預設的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.manifest(c#程式在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. 陣列中重複的資料(C、C++、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 Manifest(8)
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. 反轉字串中的單詞 III(C++)
給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。 示例 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指出並給出修改方案。此外對於柵格影象的刪除、重新命名,向量資料的刪除和重新命名都有同樣的問題,修改方式也都一樣,具體如下。 以柵格資料為例,具體修改為: