ms升級(jí)了之后,有些時(shí)候程序無(wú)法操作系統(tǒng)盤的內(nèi)容,因?yàn)闄?quán)限不夠。XP下也會(huì)存在這些問(wèn)題,但因?yàn)閄P系統(tǒng)默認(rèn)權(quán)限設(shè)置沒(méi)有WIN 7 和WIN 8 那么嚴(yán)格,所以很少遇到因?yàn)闄?quán)限問(wèn)題導(dǎo)致程序運(yùn)行失敗的情況。以下代碼是表示如何獲得管理員權(quán)限運(yùn)行程序。
static void Main(string[] Args)
{
/**
* 當(dāng)前用戶是管理員的時(shí)候,直接啟動(dòng)應(yīng)用程序
* 如果不是管理員,則使用啟動(dòng)對(duì)象啟動(dòng)程序,以確保使用管理員身份運(yùn)行
*/
//獲得當(dāng)前登錄的Windows用戶標(biāo)識(shí)
System.Security.Principal. WindowsIdentity identity = System.Security.Principal.WindowsIdentity .GetCurrent();
// 創(chuàng)建Windows 用戶主題
System.Security.Principal. WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal (identity);
//判斷當(dāng)前登錄用戶是否為管理員
if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
{
//如果是管理員,則直接運(yùn)行
Application.EnableVisualStyles();
Application.Run(new Form1());
}
else
{
//創(chuàng)建啟動(dòng)對(duì)象
System.Diagnostics. ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo ();
//設(shè)置運(yùn)行文件
startInfo.FileName = System.Windows.Forms. Application.ExecutablePath;
//設(shè)置啟動(dòng)參數(shù)
startInfo.Arguments = String.Join(" " , Args);
//設(shè)置啟動(dòng)動(dòng)作,確保以管理員身份運(yùn)行
startInfo.Verb = "runas";
//如果不是管理員,則啟動(dòng) UAC
System.Diagnostics. Process.Start(startInfo);
System.Windows.Forms. Application.Exit();
}