使用c 對windows進行關機 重啟或登出

2021-09-06 12:57:44 字數 2570 閱讀 5810

方法一:呼叫windows自帶的shutdown.exe (缺點:會出現倒計時視窗)

system.diagnostics.process.start("shutdown.exe", "-r -f -t 15");

shutdown引數含義:-r關閉並重啟動此計算機;-f 強制執行的應用程式關閉而沒有警告;-t 15 延時15秒

shutdown.exe的詳細用法:

shutdown [-i | -l | -s | -r | -a] [-f] [-m //computername] [-t xx] [-c "comment"] [-d up:xx:yy]

沒有引數 顯示此訊息(與 ? 相同)

-i 顯示 gui 介面,必須是第乙個選項

-l 登出(不能與選項 -m 一起使用)

-s 關閉此計算機

-r 關閉並重啟動此計算機

-a 放棄系統關機

-m //computername 遠端計算機關機/重啟動/放棄

-t xx 設定關閉的超時為 xx 秒

-c "comment" 關閉注釋(最大 127 個字元)

-f 強制執行的應用程式關閉而沒有警告

-d [u][p]:xx:yy 關閉原因**

u 是使用者**

p 是乙個計畫的關閉**

xx 是乙個主要原因**(小於 256 的正整數)

yy 是乙個次要原因**(小於 65536 的正整數)

方法二:呼叫api

1

private

const

int se_privilege_enabled = 0x00000002;2

private

const

int token_query = 0x00000008;3

private

const

int token_adjust_privileges = 0x00000020;4

private

const

string se_shutdown_name = "

seshutdownprivilege";

56[flags]

7public

enum exitwindows : uint816

17[flags]

18private

enum shutdownreason : uint

1957

58 [structlayout(layoutkind.sequential, pack = 1

)]59

private

struct

tokpriv1luid

6065

66 [dllimport("

kernel32.dll

", exactspelling = true

)]67

private

static

extern

intptr getcurrentprocess();

6869 [dllimport("

advapi32.dll

", exactspelling = true, setlasterror = true

)]70

private

static

extern

bool openprocesstoken(intptr h, int acc, ref

intptr phtok);

7172 [dllimport("

advapi32.dll

", setlasterror = true

)]73

private

static

extern

bool lookupprivilegevalue(string host, string name, ref

long

pluid);

7475 [dllimport("

advapi32.dll

", exactspelling = true, setlasterror = true

)]76

private

static

extern

bool adjusttokenprivileges(intptr htok, bool disall, ref tokpriv1luid newst, int

len, intptr prev, intptr relen);

7778 [dllimport("

user32.dll")]

79private

static

extern

bool

exitwindow***(exitwindows uflags, shutdownreason dwreason);

8081

///82

///關機、重啟、登出windows

83///

84///

85public

static

void

doexitwindows(exitwindows flag)

86

用手機對電腦進行遠端關機

ps 本人一月份寫的文章,貼在這裡。昨天真是奔波的一天,中午烤肉逛街下午壽司看電影 陪老婆 今天中午又是麻辣 額,不爭氣的腸胃果然導致我拉肚子了。不過,話說昨天下午在石景山萬達吃完壽司後,看了 金陵十三釵 倒是頗有感觸,這部電影 又名 保衛戰 旗幟鮮明的打出了這樣口號 讓 先走。老謀子的電影越來越不...

使用vscode對c進行除錯

最近在學習c語言。知道vscode支援對c語言的 的除錯,就想試試。然後找了教程 照著做都沒成功。打了斷點卻無法命中。然後想到很有可能是因為gcc編譯 的問題,導致無法命中斷點,gdb除錯程式或許有什麼獨特的命令。於是上網搜尋關於gdb的資料。很容易就找到這篇 解決我問題的文章的前半部分,我意識到,...

C 實現 Windows 關機 重啟 登出

using system using system.collections.generic using system.text using system.runtime.interopservices dllimport kernel32.dll exactspelling true interna...