要遠程關機得滿足3個條件
第一 組策略里允許了 遠程網絡強制關機
第二 防火牆要關了
第三 GUEST這個帳戶要開啟
void shutdown()
{
Process commandProcess = new Process();
try
{
commandProcess.StartInfo.FileName = "cmd.exe";
commandProcess.StartInfo.UseShellExecute = false;
commandProcess.StartInfo.CreateNoWindow = true;
commandProcess.StartInfo.RedirectStandardError = true;
commandProcess.StartInfo.RedirectStandardInput = true;
commandProcess.StartInfo.RedirectStandardOutput = true;
commandProcess.Start();
commandProcess.StandardInput.WriteLine("shutdown /r /m 127.0.0.1 /t 200 /f");
commandProcess.StandardInput.WriteLine("exit");
for (; !commandProcess.HasExited; )//等待cmd命令運行完畢
{
System.Threading.Thread.Sleep(1);
}
//錯誤輸出
string tmpout = commandProcess.StandardError.ReadToEnd();
string tmpout1 = commandProcess.StandardOutput.ReadToEnd();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
if (commandProcess != null)
{
commandProcess.Dispose();
commandProcess = null;
}
}
}
使用C#調用cmd.exe執行shutdown.exe命令就行。
Shutdown使您能夠一次關閉或重新啟動一台本地或遠程計算機。
語法
shutdown [/i | /l | /s | /r | /a | /p | /h | /e] [/f] [/m \\ComputerName] [/t XXX] [/d [p:] XX:YY [/c "Comment"]]
參數
/i
顯示“遠程關機對話框”。/i 選項必須是鍵入的第一個參數,之后的所有參數都將被忽略。
/l
立即注銷當前用戶,沒有超時期限。不能將 /l 與 /m \\ComputerName 或 /t 一起使用。
/s
關閉計算機。
/r
關機后重新啟動計算機。
/a
取消關機操作(僅在超時期限內有效)。a 參數僅可以與 /m \\ComputerName 一起使用。
/p
關閉本地計算機(不是遠程計算機),沒有超時或警告。/p 只能和 /d 一起使用。如果您的計算機不支持關閉電源功能,使用 /p 將關閉系統但不會切斷您的計算機電源。
/h
使本地計算機處於休眠狀態(如果已啟用休眠)。僅可將 h 與 /f 一起使用。
/e
允許在目標計算機上記錄意外關機原因。
/f
強制關閉正在運行的應用程序而不提前警告用戶。
警告
使用 /f 選項可能導致未保存的數據丟失。
/m \\ComputerName
指定目標計算機。不能與 /l 選項一同使用。
/t XXX
將重新啟動或關機前超時期限或延遲設置為 XXX 秒會使得在本地控制台顯示一條警告信息。您可以指定的范圍為 0 - 600 秒。如果省略 /t,則默認超時期限為 30 秒。
/d [p:]XX:YY
列出系統重新啟動、關機或關閉電源的原因。下表描述了參數值。 值 描述
p: 表示重新啟動或關機是已計划的。如果不使用 /p 選項,關閉事件跟蹤程序將認為重新啟動或關機是沒有計划的。
XX 指定主要原因代碼 (0-255)。
YY 指定次要原因代碼 (0-65535)。
/c "Comment"
使您可以對關機原因做出詳細注釋。必須首先使用 /d 選項提供一個原因。必須將注釋引在引號中。最多可以使用 127 個字符。
/?
在命令提示符下顯示幫助,包括在本地計算機上定義的主要原因和次要原因的列表。只鍵入 shutdown 而不帶任何參數也可以顯示幫助。
注釋
必須為用戶授予關閉系統的用戶權力,該用戶才能使用 shutdown 命令關閉本地或遠程管理的計算機。詳細信息,請參閱“相關主題”中的“訪問控制概述”和“特權”。
用戶必須是 Administrators 組的成員才能對本地或遠程管理的計算機的意外關機進行批注。如果目標計算機加入了域,則 Domain Admins 組的成員也能執行此過程。
如果希望一次關閉多台計算機,可針對每台計算機使用腳本來調用 shutdown,或者可使用 shutdown /i 顯示遠程關機對話框。
一旦指定了主要和次要原因代碼,您必須首先為計划使用某種特定原因的每個計算機定義那些原因代碼。如果目標計算機上沒有定義原因代碼,關閉事件跟蹤程序將無法記錄正確的原因文本。
切記使用 p: 參數指出關機是計划關機。省略 p: 表示關機是非計划關機。如果在非計划關機的原因代碼后鍵入 p:,命令不會執行關機。相反,如果省略 p: 並鍵入計划關機的原因代碼,命令不會執行關機。
示例
要強制關機原因為“應用程序:維護(計划中)”且注釋為“重新配置 myapp.exe”的應用程序關閉並在 1 分鍾延遲后重新啟動本地計算機,請鍵入:
shutdown /r /t 60 /c "Reconfiguring myapp.exe" /f /d p:4:1
要使用相同的參數重新啟動遠程計算機 \\ServerName,請鍵入:
shutdown /r /m \\servername /t 60 /c "Reconfiguring myapp.exe" /f /d p:4:1