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