狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

了解C#程序以管理員權(quán)限運(yùn)行的實(shí)現(xiàn)

admin
2024年10月20日 23:16 本文熱度 20

前言

自 Windows Vista  開始,系統(tǒng)就增加了UAC(用戶賬戶控制) 的安全機(jī)制,當(dāng) UAC 被打開,我們即使以管理員權(quán)限登錄,應(yīng)用程序默認(rèn)情況下也無(wú)法對(duì)系統(tǒng)目錄、系統(tǒng)注冊(cè)表等進(jìn)行操作,從而提升了系統(tǒng)的安全性。但對(duì)我們開發(fā)的應(yīng)用程序來(lái)說(shuō),程序如何以管理員的方式運(yùn)行,則需開發(fā)者考慮。本文介紹了 C# 程序如何實(shí)現(xiàn)用戶以管理員權(quán)限運(yùn)行。

實(shí)現(xiàn)

1、修改應(yīng)程序文件的屬性

在安裝好的應(yīng)用程序目錄中,右擊程序文件,選擇屬性,然后在彈出的屬性界面中找到兼容性標(biāo)簽頁(yè),勾選以管理員身份運(yùn)行此程序。其實(shí)這種方式并不是開發(fā)者實(shí)現(xiàn)的,只是用戶根據(jù)指引調(diào)整實(shí)現(xiàn)。這為用戶者帶來(lái)了不少的麻煩,操作起來(lái)也不友好。

2、通過(guò)配置應(yīng)用程序清單文件

在 C# 的項(xiàng)目上,可通過(guò)右擊項(xiàng)目,選擇添加,在新項(xiàng)中選擇應(yīng)用程序清單文件(僅限Windows) 添加文件到項(xiàng)目中。打開文件,找到與UAC相關(guān)設(shè)置項(xiàng)。

<requestedExecutionLevel  level="asInvoker" uiAccess="false" />修改為:<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

修改文件后,將清單文件添加到項(xiàng)目的資源中,右擊項(xiàng)目-->屬性-->資源-->添加資源文件(選擇app.manifest)。重新生成項(xiàng)目后,打開應(yīng)用程序時(shí)就會(huì)提示需要以管理員權(quán)限運(yùn)行。如下圖:

注意:通過(guò)配置上面方式后,我們應(yīng)該使用管理員身份運(yùn)行 Microsoft Visual Studio。否則提示下圖:

3、通過(guò)在程序入口編寫代碼

在應(yīng)用程序入口文件 Program.cs 添加相關(guān)代碼。主要使用Process.Start 方式啟動(dòng)應(yīng)用程,使用此方式 ,運(yùn)行程序時(shí),也會(huì)提示以管理員身份運(yùn)行,需要用戶點(diǎn)擊提示才以啟動(dòng)程序。

using Microsoft.Win32;using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Security.Principal;using System.Threading.Tasks;using System.Windows.Forms;
namespace Fountain.WinForms.UACDemo{    internal static class Program    {        internal static ApplicationContext context = null;        /// <summary>        /// 應(yīng)用程序的主入口點(diǎn)。        /// </summary>        [STAThread]        static void Main()        {            Application.EnableVisualStyles();            Application.SetCompatibleTextRenderingDefault(false);            if (IsRunAsAdmin())            {                // 是管理員角色,管理員權(quán)限運(yùn)行                context = new ApplicationContext(new FormMain());                Application.Run(context);            }            else            {                // 使用 ProcessStartInfo 以管理員方式啟動(dòng)                RunAsAdmin();                //退出                Application.Exit();            }        }        /// <summary>        /// 使用 ProcessStartInfo 以管理員方式啟動(dòng)        /// </summary>        public static void RunAsAdmin()        {            ProcessStartInfo startInfo = new ProcessStartInfo();            //設(shè)置以管理員方式啟動(dòng)標(biāo)記            startInfo.Verb = "runas";            //使用shell啟動(dòng)進(jìn)程            startInfo.UseShellExecute = true;            startInfo.FileName = Process.GetCurrentProcess().MainModule.FileName;            Process.Start(startInfo);        }        /// <summary>        /// 判斷當(dāng)前角色,是否為管理員權(quán)限運(yùn)行        /// </summary>        /// <returns></returns>        public static bool IsRunAsAdmin()        {            // 獲取當(dāng)前的windows 用戶            WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();            // 檢查 獲取當(dāng)前的windows 用戶 的 Windows 組成員身份。            WindowsPrincipal windows = new WindowsPrincipal(windowsIdentity);            // 判斷當(dāng)前用戶是否是管理員            if (windows.IsInRole(WindowsBuiltInRole.Administrator))            {                return true;            }            return false;        }            }}

小結(jié)

上面三種方式,除第一種方式,不是在編寫應(yīng)用程序時(shí)指定以管理員權(quán)限方式啟動(dòng)的實(shí)現(xiàn),但都能實(shí)現(xiàn)管理員權(quán)限運(yùn)行應(yīng)用程序的目的。在使用代碼時(shí),我們還可增加判斷當(dāng)前是否開啟UAC、判斷UAC管理員提升權(quán)限提示行為等來(lái)確認(rèn)啟動(dòng)管理員權(quán)限運(yùn)行的提前條件。希望這些內(nèi)對(duì)您有所幫助,如有不到之處,請(qǐng)多多包涵。如果你覺得還有其它例子歡迎留言。


該文章在 2024/10/22 12:10:40 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2024 ClickSun All Rights Reserved