如何远程关机,操作系统win2k,winnt,unix?不在本地机器装程序!(200分)

  • 主题发起人 主题发起人 Aiirii
  • 开始时间 开始时间
A

Aiirii

Unregistered / Unconfirmed
GUEST, unregistred user!
如何远程关机,操作系统win2k,winnt,unix?
要求:只用远程程序控制,不要本地的服务器装任何的其它程序,但可以起一些本来就有处带的服务,如snmp.
谢绝灌水!!
 
不可能!没有监听程序除非Gates!!!!!
 
不可能???只是你不知道而已,我知道一点,但不知如何实现。有实达UPS配的一个监控UPS状态的软件,就有这个在关UPS前,先将认定的主机关机的功能!!
 
必须有一点要明确:
要实现远程关机,必须在本地远程登陆到远程主机,并获得关机权限.
 
Unit就用TELNET,而Winnt那些的好像有命令的,在Win2K的DDK里面。。。

大概就这些了。。。。
 
如果unix你有root权限,只要能登陆的话,在那里关机都一样。
 
NT/2000可以开远程登录,登录后关了它就是了。
 
是UNIX系统的话,有root权限在那都可以关机,
Windows系统可以用PCANYWHERE等远程控制软件
 
在unix(linux)下,如果没其它方法,我想可以telnet上去.但我想做得通用一点就是说,一段代码,就可用在win2K,winxp,还有linux上!
我听说有一个程序随实达UPS配的,在UPS电池要没电时,会将设定的主机shutdown,然后再自己关机!
我们公司是做网络监控的,知道,可能能用SNMP解决,因为可以用SNMP远程关掉很多东东!包括UPS,空调.主机的部分,我还不知道!
还有,我现在做的是比较正规的程序.你要知道,一般人家单位的主机,是不希望别人再在其主服务程序之外装其它的程序的,怕影响其主程序的运行!所以……,如果装的是window自带的,要是真的出了问题,还可以赖在比尔盖茨身上!:)说笑的!
有兴趣可看 http://www.csdn.net/expert/topic/468/468357.xml
有些网友给了一些好意见!
 
"
只用远程程序控制,不要本地的服务器装任何的其它程序
"
解决方法只有一个,先写掉ups 再 切断电源!

 
::::::“我听说有一个程序随实达UPS配的,在UPS电池要没电时,会将设定的主机
shutdown,然后再自己关机!:::::::

请问这个程序是在运行在哪里啊,是跟UPS相连
的机器还是。。。。。。。

 
unix用 telnet可以自己写一个仿真输入telnet命令的程序
winnt/win2000本身支持远程关机的,服务器不用安装东西,客户端则没有现成的工具
(客户端需要知道服务器的管理员密码)
只好自己写程序,使用到api InitiateSystemShutdown
要正常使用上面的函数,还需要执行:
HANDLE token;
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&token))
{ShowMessage(SysErrorMessage(GetLastError()));
abort();
}
TOKEN_PRIVILEGES priv[2];
priv[0].PrivilegeCount=2;
if(!LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&priv[0].Privileges[0].Luid))
{ShowMessage(SysErrorMessage(GetLastError()));
CloseHandle(token);
abort();
}
priv[0].Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;

if(!LookupPrivilegeValue(NULL,SE_REMOTE_SHUTDOWN_NAME,&priv[0].Privileges[1].Luid))
{ShowMessage(SysErrorMessage(GetLastError()));
CloseHandle(token);
abort();
}
priv[0].Privileges[1].Attributes=SE_PRIVILEGE_ENABLED;

if(!AdjustTokenPrivileges(token,false,priv,sizeof priv,NULL,NULL))
{ShowMessage(SysErrorMessage(GetLastError()));
CloseHandle(token);
abort();
}
CloseHandle(token);

而且客户端也必须是nt/2000
 
to lvxq:是一个客户(UPS提供商)对我说的,是安装在服务器上的软件,可在软件上远程修改UPS的各种运行参数,以及提到的远程关机!

to Pipi:你给我程序我要试一下,看怎样,其实我老是倾向于用SNMP(简单网络协议)来操作,但我也是一知半解。希望我能找到好的解决方法!!
 
同意Pipi,但是操作之前先要以管理员身份登陆到远程计算机,否则得不到权限。
有兴趣到这里看看。
http://nowcan.yeah.net
 
我试过了PiPi的提法了,但关本机很正常,关远方的提示访问拒绝,我想是得不到'SeRemoteShutdownPrivilege'的权限吧,但一时不知如何得到,请问如何得到???
还有,nowcan的网站,好象有点问题,只有首页!!
 
关远程的,需要先登录上对方,
命令方式登录,执行:
net use //对方机器名 /user:administrator *
程序方式登录:
用api: WNetAddConnection2
 
有点乱,我想应该是这样,用 WNetAddConnection2得到的handle,再用LookupPrivilegeValue打开其SeRemoteShutdownPrivilege的权限,不知思路对否??试了一下,不行,还在调试!!
 
unix用管理组的用户身份telnet登上后,用shutdown或reboot;
nt用终端服务客户端以有power users权限的用户身份登录,即可关机或重起。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部