C# WinForm判斷Win7下程式是否以管理員身份執行
Vista 和 Windows 7 作業系統為了加強安全,增加了 UAC(使用者賬戶控制) 的機制,如果 UAC 被開啟,使用者即使是以管理員許可權登入,其應用程式預設情況下也無法對系統目錄,系統登錄檔等可能影響系統執行的設定進行寫操作。這個機制大大增強了系統的安全性,但對應用程式開發者來說,我們不能強迫使用者去關閉UAC,但有時我們開發的應用程式又需要以 Administrator 的方式執行,即 Win7 中 以 as administrator 方式執行,那麼我們怎麼來實現這樣的功能呢?
我們在 win7 下執行一些安裝程式時,會發現首先彈出一個對話方塊,讓使用者確認是否同意允許這個程式改變你的計算機配置,但我們編寫的應用程式預設是不會彈出這個提示的,也無法以管理員許可權執行。本文介紹了 C# 程式如何設定來提示使用者以管理員許可權執行。
首先在專案中增加一個 Application Manifest File
預設的配置如下:
<?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 Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
我們可以看到這個配置中有一個 requestedExecutionLevel 項,這個項用於配置當前應用請求的執行許可權級別。這個項有3個值可供選擇,如下表所示:
Value | Description | Comment |
asInvoker | The application runs with the same access token as the parent process. | Recommended for standard user applications. Do refractoring with internal elevation points, as per the guidance provided earlier in this document. |
highestAvailable | The application runs with the highest privileges the current user can obtain. | Recommended for mixed-mode applications. Plan to refractor the application in a future release. |
requireAdministrator | The application runs only for administrators and requires that the application be launched with the full access token of an administrator. | Recommended for administrator only applications. Internal elevation points are not needed. The application is already running elevated. |
asInvoker : 如果選這個,應用程式就是以當前的許可權執行。
highestAvailable: 這個是以當前使用者可以獲得的最高許可權執行。
requireAdministrator: 這個是僅以系統管理員許可權執行。
預設情況下是 asInvoker。
highestAvailable 和 requireAdministrator 這兩個選項都可以提示使用者獲取系統管理員許可權。那麼這兩個選項的區別在哪裡呢?
他們的區別在於,如果我們不是以管理員帳號登入,那麼如果應用程式設定為 requireAdministrator ,那麼應用程式就直接執行失敗,無法啟動。而如果設定為 highestAvailable,則應用程式可以執行成功,但是是以當前帳號的許可權執行而不是系統管理員許可權執行。如果我們希望程式在非管理員帳號登入時也可以執行(這種情況下應該某些功能受限制) ,那麼建議採用 highestAvailable 來配置。
關於requestedExecutionLevel 設定的權威文件請參考下面連結:
相關推薦
C# WinForm判斷Win7下程式是否以管理員身份執行
如果程式不是以管理員身份執行,操作本地檔案會提示:System.UnauthorizedAccessException異常 Vista 和 Windows 7 作業系統為了加強安全,增加了 UAC(使用者賬戶控制) 的機制,如果 UAC 被開啟,使用者即使是以管理員許可權登
C# WinForm判斷程式是否以管理員身份執行,UAC許可權的提權與降權
另外新增2個相關文章(只有提權,沒有提到降低許可權): 歡迎轉載,但最好請註明 Jero 翻譯。 已提權、已經提升許可權的程序——可以理解為使用管理員許可權執行的。未提權、沒有提升許可權的程序——可以理解為使用 非 管理員許可權(既普通使用者許可權)執行的。 UAC機制是由Vista引出,並
在VS中如何讓C#語言編寫的程式自動以管理員身份執行
在Vista或Win7或Win8或Win10系統上exe程式預設不是以管理員身份執行的,它會被UAC(使用者帳戶控制)阻止訪問系統某些功能,如修改登錄檔操作、操作硬碟上的檔案等。但是有時我們確實需要程式在開始執行時就是以管理員身份執行的,這時我們在VS中需進行以下操作:
讓程式自動以管理員身份執行
C#: 1) 開啟Vs2005或vs2008工程,看在Properties下是否有app.manifest這個檔案;如沒有,右擊工程在選單中選擇“屬性”, 選中"Security",在介面中勾選"Enable ClickOnce Security Settings"後
解決win7的ie8瀏覽器以管理員身份執行,才不會崩潰的方法
自己的是win7系統,ie8出現問題,以普通使用者開啟時,會崩潰;以管理員身份執行,才可以。 方案一: 打算以管理員身份登入電腦,這樣電腦的所有軟體都可以以管理員身份執行啦 cmd=>以管理員身份執行=》命令列輸入“net user ad
判斷程式是否是以 管理員 身份執行 visual c++
// 判斷本程式是否是以管理員身份執行的 //BY :暗影行者 // date: 20110716 BOOL ExeIsAdmin() { #define ACCESS_READ 1 #define ACCESS_WRITE 2 // if(g_bIsN
Win7 C# 控制檯程式寫登錄檔被拒,需要以管理員身份執行。
最近寫了一個控制檯程式,將程式的相關資訊註冊到登錄檔中。但是執行的時候提示寫登錄檔被拒。電腦的當前使用者沒有管理員的許可權。 如何給控制檯程式賦管理員的許可權呢?
Win10下Visual Studio 2015編譯報“無法註冊程式集***dll- 拒絕訪問。請確保您正在以管理員身份執行應用程式。對登錄檔項”***“的訪問被拒絕。”問題解決
原來在Win7下Visual Studio2008跑的好好的程式,現在在Win10下編譯報“無法註冊程式集dll- 拒絕訪問。請確保您正在以管理員身份執行應用程式。對登錄檔項”“的訪問被拒絕。”的錯誤。報錯資訊明面上看是讓你用管理員身份執行Visual Studio,然後開啟工程編譯就好了。
C#預設以管理員身份執行程式
Vista 和 Windows 7 作業系統為了加強安全,增加了 UAC(使用者賬戶控制) 的機制,如果 UAC 被開啟,使用者即使是以管理員許可權登入,其應用程式預設情況下也無法對系統目錄,系統登錄檔等可能影響系統執行的設定進行寫操作。這個機制大大增強了系統的安全性,但對應用程式開發者來說,我們不能強迫
Win7 下以管理員身份執行批處理檔案,切換JDK版本
Win7下 切換JDK的批處理命令 1. 批處理檔案(必須以管理員身份執行)內容如下 @echo off rem --- Base Config 配置JDK的安裝目錄 --- :init set JAVA_HOME_1_8=C:\Program Files\Java\jdk1.8 set JAVA_HO
windows 7下的程式 請求以管理員許可權執行
windows 7 對安全方面的管理要比XP嚴格多了,但是如果你寫了一個程式需要以管理員許可權執行怎麼辦呢? 就像這樣 ok,我也是參考了很多其他人的文章 比如: 在visual stuido 2010 中的設定就是這個樣子的 當你除錯時會出這樣的對話
C#如何以管理員身份執行程式
在使用winform程式獲取呼叫cmd命令提示符時,如果是win7以上的作業系統,會需要必須以管理員身份執行才會執行成功,否則無效果或提示錯誤。 比如在通過winform程式執行cmd命令時,某些情況下如果不是以管理員身份執行,則會提示命令無效。
如何在DOS下以管理員身份執行命令?
管理員 info -s ont window 命令 com 管理 轉換 原創 普通User的DOS窗口: 以管理員身份運行的DOS窗口: 轉換(Windows10系統下): 13:11:55 2018-10-18如何在DOS下以管理員身份執行命令?
c# 設定以管理員身份執行開發的軟體 visual studio 2017
用C#開發的軟體需要獲得管理員許可權對C盤檔案進行更改。此文更改C#的manifest檔案以達到雙擊執行開發出的軟體時提示以管理員身份執行的效果。 1.建立manifest檔案。 右擊專案-> 可在此更改檔名(字尾不能更改)-> 2.開啟新建立的manifes
win7/10中以管理員身份執行bat指令碼時,獲取當前檔案所在目錄
此命令適用於bat雙擊正常開啟,以管理員開啟閃退的情況 以下為轉載,地址http://blog.chinaunix.net/uid-27000874-id-3224772.html 知道windows的bat指令碼很強大,但是具體命令向來很少接觸,今天在win7上執行自己
解決IDM“警告:您在以管理員身份執行IDM,在該模式下,IDM無法接管瀏覽器的下載事件”的問題。
執行,輸入gpedit.msc確定,把如圖的那個改成“已啟用” 造成該問題的原因是有些電腦系統內建管理員賬戶Administrator,所以開啟所有軟體都是以管理員許可權,跳過了UAC(使用者賬戶控制),如上修改組策略後,即可解決。
[技巧.Dotnet]輕鬆實現“強制.net程式以管理員身份執行”。
使用場景: 程式中不少操作都需要特殊許可權,有時為了方便,直接讓程式以管理員方式執行。 (在商業軟體中,其實應該儘量避免以管理員身份執行。在安裝或配置時,提前授予將相應許可權。) 做法: 以C#專案為例: 1) 選擇專案,右鍵 -> 屬性 -> 安全性 -&
判斷程序是否"以管理員身份執行"
判斷程序是否是“以管理員身份執行”: /// @brief 判斷程序是否以管理員身份執行 /// @param[in] dwProcessId : 程序ID /// @param[in] b
VS2017中設定程式以管理員身份執行
在Windows程式設計中,執行程式時出現錯誤,錯誤返回值為5,這表示程式執行的許可權不夠,在Visual Studio 2017 中設定程式以管理員身份執行的步驟是:直接專案右鍵---屬性--
win7 批處理檔案預設以管理員身份執行及清除IE快取指令碼
1、指令碼預設以管理員身份執行 在win7中,批處理檔案有時需要以管理員身份執行,如清除 IE 快取的指令碼,若不使用管理員許可權,常常會卡死。 批處理檔案以管理員身份執行很簡單,可惜,竟然很長時間不知道怎麼去設定,原來總是在“相容性”裡設定以管理員身份執行,可是批處理檔案