如何实现在A上用程序启动停止B上的服务(100分)

  • 主题发起人 主题发起人 catbrother
  • 开始时间 开始时间
C

catbrother

Unregistered / Unconfirmed
GUEST, unregistred user!
同上<br>A和B是两台在同一局域网里的计算机<br>计算机名以及IP地址是固定的<br>如何用程序在A上执行,启动或停止B上的服务
 
在B上装一个被控软件,由A操作被控软件控制B上的服务
 
telnet b<br>net start 服务...<br>net stop 服务...
 
我不想在别的计算机上再弄一个软件<br>还有其他办法没?
 
另:希望能够提供代码
 
nicai_wgl 的做法可以, &nbsp;用winexec 就可以执行它。 &nbsp;这是最简单的方法。
 
采用telnet的方法<br>在B上面还要做什么吗?怎么让B接收telnet?
 
function ServiceStop(const ServiceName: string): Boolean;<br>{<br> &nbsp;停止服务<br>}<br>var<br> &nbsp;SCM, SCH: SC_Handle;<br> &nbsp;ServiceStatus: TServiceStatus;<br>begin<br> &nbsp;Result := False;<br> &nbsp;SCM := OpenSCManager(computername, nil, SC_MANAGER_ALL_ACCESS);<br> &nbsp;if SCM &lt;&gt; 0 then<br> &nbsp;begin<br> &nbsp; &nbsp;SCH := OpenService(SCM, PChar(ServiceName), SERVICE_ALL_ACCESS);<br> &nbsp; &nbsp;if SCH &lt;&gt; 0 then<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp;Result := ControlService(SCH, SERVICE_CONTROL_STOP, ServiceStatus);<br> &nbsp; &nbsp; &nbsp;CloseServiceHandle(SCH);<br> &nbsp; &nbsp;end;<br> &nbsp; &nbsp;CloseServiceHandle(SCM);<br> &nbsp;end;<br>end;
 
djcniay<br>你用的是控件吗?引用了哪个单元?<br>我怎么查不到所用的函数?
 
看我的网站 网站 http://bbs.8isp.cn/?u=233 上面有答案
 
WbemScripting.SWbemLocator
 
各位大哥啊<br>别说话说一半啊!!!
 
去 Google 搜一下 WbemScripting.SWbemLocator
 
djcniay<br>为什么我在程序运行的计算机上(XP系统)调用远端的(2000系统)就不行呢?<br> SCM := OpenSCManager(computername, nil, SC_MANAGER_ALL_ACCESS);<br>当Computername是本机是,SCM返回不为0<br>当Computername是远端机(2000系统),SCM返回的是0
 
telnet的方法可能有局限,假如B机出于安全考虑而不启动telnet服务那就没法操作的
 
解决了!<br>djcniay程序是正解!<br>但是,我在目标端安装了VC6.0,并且在执行语句中增加了读取状态的语句,已经能成功控制服务了!
 
接受答案了.
 
后退
顶部