史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   網路軟硬體架設技術文件 (http://forum.slime.com.tw/f133.html)
-   -   如何用139連接阜遠端重新啟動NT伺服器 (http://forum.slime.com.tw/thread118996.html)

psac 2004-07-30 11:56 PM

如何用139連接阜遠端重新啟動NT伺服器
 
最近很多朋友問我:NT的機器如果遠端管理軟體壞了,怎麼重新啟動呢?其實,如果伺服器的139連接阜開著,重新啟動是很簡單的,步驟如下:

1、net use \\xxx.xxx.xxx.xxx\ipc$ password /user:username
  建立一個IPC會話

2、net use H: \\xxx.xxx.xxx.xxx\c$
  將對方的C碟映射為自己的H盤

3、copy con h:\reboot.bat
  iisreset /reboot
  CTRL+Z
  在對方的C碟上產生了一個能重啟電腦的文件

4、net time \\xxx.xxx.xxx.xxx
  得到對方的時間

5、at \\xxx.xxx.xxx.xxx 重新啟動的時間 c:\reboot.bat
  重新啟動的時間等於對方的時間加幾分鐘

6、at \\xxx.xxx.xxx.xxx
  看看工作加上沒有

7、等......
上面的第三步是only for WIN2K的,如果是NT,你需要用一個特定的重新啟動程序,我們可以自己編寫一個reboot.exe來取代reboot.bat,原理很簡單,程式碼如下:
#include "stdio.h"
#include "windows.h"
int main()
{
     //定義重新啟動的時候傳送給所有用戶的消息
     LPSTR msg="Reboot Tool By Lion Hook\nhttp://www.xici.net";
     //嘗試用最簡單的API函數重新啟動
     if(ExitWindowsEx(EWX_REBOOT, 0))return TRUE;
     if(ExitWindowsEx(EWX_REBOOT   EWX_FORCE, 0))return TRUE;
     //因為上面的重新啟動不成功,所以需要調整本行程的特權
     HANDLE hToken;
     TOKEN_PRIVILEGES tkp;
     if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES   TOKEN_QUERY, &hToken)) return FALSE;
     //獲取重新啟動的特權SE_SHUTDOWN_NAME
     LookupPrivilege類型(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
     tkp.PrivilegeCount = 1;
     tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
     AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
     //判斷是NT內核還是9x內核,選項用不同的方式
     if(!(GetVersion() & 0x80000000))
       InitiateSystemShutdown(NULL, msg, 20, TRUE, TRUE);
     else if (!ExitWindowsEx(EWX_REBOOT, 0))
         if(!ExitWindowsEx(EWX_REBOOT   EWX_FORCE, 0))
            return FALSE;
     return TRUE;


所有時間均為台北時間。現在的時間是 09:19 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2021, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1