CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > WinSystem子站 > Windows 2003

如何利用139端口来远程重起NT服务器

作者: ,  出处:chinaitlab, 责任编辑: 袁绍龙, 
2007-03-21 14:38
  通过服务器的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

  LookupPrivilegeValue(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;

  }

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i