メニュー
Infomation
■お知らせ
[スパム対策]コメントにURLを含めると自動的に削除されます。
■このサイトについて
一応残していますが、全時代の遺物。全ての情報は古く役に立ちません 連絡先:メールアドレス
■日記更新情報
RSSRSS|RSS(本文のみ)|lirs
実験&リサーチ
巡回先
製作環境
 

 



2004|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|11|12|
2011|01|
2014|05|08|
2017|07|
2018|03|
2020|08|10|
2021|11|

2006年07月27日(Thursday) [長年日記]

_ Windowsサーバーを再起動するCGI

一体なにに使うんだ、そんな怖いcgiという感じですが、ブラウザでアクセスするとWindowsを再起動するCGIを作りました。

背景を簡単に説明。

今日どうしても出先から自宅のWindows2000 Serverの設定をいじりたかったのです。

しかしターミナルサービスへのログインを家でしたままで、ネットワークログオン数がライセンス数一杯になってしまいました。

本当に急いでいたので已む無くFTPで再起動コマンドをputしてhttp経由で実行しようと思ったわけです。前もやった気が・・。

Content-Typeさえ出力すればいいわけですが、これが無いとエラーになってしまうので必須です。

WindowsXPのシャットダウンコマンドを使うのはそれが故にダメかもしれない。

が、サーバエラーになっても実行自体はされてるのでOKなのかも。

生憎Windows2000だったので簡単にプログラミングしました。

Windows2000/XPでのコンピュータの再起動方法は以下のような感じです。


1 : #include <windows.h>

2 : #include <stdio.h>

3 :

4 : int main()

5 : {

6 : HANDLE hToken;

7 : TOKEN_PRIVILEGES tp;

8 :

9 : //Content-Typeを出力

10 : printf("Content-type: text/html\n\n");

11 :

12 : //プロセスのトークンを開く

13 : if (!OpenProcessToken(GetCurrentProcess(),

14 : TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)){

15 : printf("Error on OpenProcessToken() %d\n",GetLastError());

16 : }

17 :

18 : //SE_SHUTDOWN_NAMEのLUID取得

19 : LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,

20 : &tp.Privileges[0].Luid);

21 :

22 : tp.PrivilegeCount = 1;

23 : tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

24 :

25 : //シャットダウン特権を取得する

26 : if(!AdjustTokenPrivileges(hToken, FALSE, &tp, 0,

27 : (PTOKEN_PRIVILEGES)NULL, 0)){

28 : printf("Error on AdjustTokenPrivileges() %d\n",GetLastError());

29 : }

30 :

31 : //シャットダウン/リブート

32 : if(!ExitWindowsEx(EWX_REBOOT|EWX_SHUTDOWN|EWX_FORCE,NULL)){

33 : printf("Error on ExitWindowsEx() %d\n",GetLastError());

34 : }

35 :

36 : printf("Reboot.\n");

37 : return 0;

38 : }



最近のコメント

364,000 at 2008.06.14
Copyright (c) Suika KNOnline.NET