在程序使用“普通用戶”權(quán)限啟動(dòng)后,如果需要執(zhí)行一些需要“管理員”權(quán)限的操作時(shí),可以啟動(dòng)一個(gè)新的進(jìn)程并配置Verb = "runas"。比如以下的重啟計(jì)算機(jī)命令:
Process.Start(new ProcessStartInfoFileName = "cmd.exe",Arguments = $"/C shutdown -r -t 0",UseShellExecute = true,CreateNoWindow = false,windowstyle = ProcessWindowStyle.Normal,Verb = "runas", //配置管理員權(quán)限運(yùn)行
執(zhí)行后,將會(huì)彈出一個(gè) UAC 窗口。用戶點(diǎn)擊“是”之后,計(jì)算機(jī)就會(huì)重新啟動(dòng)。
其中,/C參數(shù)后面跟要執(zhí)行的命令,代表”執(zhí)行字符串指定的命令然后終止“。如果要獲取更多的信息可以在命令行中輸入help cmd查看cmd命令的幫助文檔。
如果需要執(zhí)行多條命令,一個(gè)簡(jiǎn)單的方式就是將上述代碼重復(fù)執(zhí)行多次。不過,該方式有一點(diǎn)小問題:每次執(zhí)行都需要用戶去授權(quán),用戶體驗(yàn)較差。
為了僅需一次授權(quán),可以將多行命令合并成一行:使用&、&&或||將多條命令隔開。
用 & 隔開,命令1 & 命令2。用法是前后命令不管是否運(yùn)行成功都會(huì)運(yùn)行下去,就是運(yùn)行1命令,運(yùn)行2命令。
用 && 隔開,命令1 && 命令2。用法是前面的命令運(yùn)行成功才運(yùn)行后面的命令,就是運(yùn)行1命令沒出錯(cuò)、運(yùn)行成功才運(yùn)行2命令。
用 || 隔開,命令1 || 命令2。用法是前面的命令運(yùn)行不成功才運(yùn)行后面的命令,就是運(yùn)行1命令出錯(cuò)、運(yùn)行不成功才運(yùn)行2命令。
如果想在執(zhí)行ping執(zhí)行成功后再執(zhí)行一個(gè)dir命令,可以使用以下代碼:
Process.Start(new ProcessStartInfoFileName = "cmd.exe",Arguments = $"/C ping www.coderbusy.com && dir",UseShellExecute = true,CreateNoWindow = false,WindowStyle = ProcessWindowStyle.Normal,Verb = "runas", //配置管理員權(quán)限運(yùn)行