windows注销时,程序如何才能不被注销? ( 积分: 50 )

  • 主题发起人 主题发起人 xinux11
  • 开始时间 开始时间
X

xinux11

Unregistered / Unconfirmed
GUEST, unregistred user!
程序运行在远程服务器上,如何才能实现,windows注销时程序不被注销?
 
把程序注册为系统服务
这样就可以了
 
注册为服务
 
一般情况下,程序运行是以当前登录用户(即交互式用户)身份和权限运行的,windows注销意味着当前运行的程序失去了运行的权限,所以,以当前登录用户身份运行的程序,在windows注销后,一定会被注销。
要想不被注销,必须让程序用指定的身份运行。比如 windows服务,就是可以在登录页上配置登录身份的。另外,如果使用Dcom做三层软件的中间层,那么在远程服务器的Dcom配置时,在标识页上,有选择运行此应用程序的用户帐户,默认是交互式用户,此时如果指定一个固定帐户,就可以使dcom中间层不受windows登录和注销的影响。
 
如何注册成服务呢?有没有相关资料?谢拉!!
 
如果使用delphi的话,好像在new里面service,不过程序需要调整,而且在服务的状态下调试程序比较麻烦。记住要使服务是auto的最好。
 
为什么不用另一种想法,我做一个服务,这个服务只有一个作用,调用我指定的程序。
被调用的程序是服务一样的身份来执行的。
 
To qqjm:

我第一次做服务,有什么资料可以参考吗?
 
服务我已经会做了,不过像qqjm说的,服务功能就是用于启动程序。我目前是这么写的:

procedure TServer2.ServiceStart(Sender: TService;
var Started: Boolean);
begin
winexec(pchar('D:/test.exe'),SW_SHOWNORMAL);//启动程序
end;


首先,这里有两个问题:
第一:为什么在服务启动的时候,我指定的这个程序不启动?
第二:代码写在service的start事件里。会不会有问题?也就是说,会不会注销了以后我指定的程序就不工作了?
 
对,把你的程序注册为Windows服务就可以了...
 
procedure TServer2.ServiceStart(Sender: TService;
var Started: Boolean);
begin
winexec(pchar('D:/test.exe'),SW_SHOWNORMAL);//启动程序
end;


为什么test.exe不启动呢?
 
不是不启动,是你没有设置服务“允许服务与桌面交互”,所以你看不到。
钩上这个,你就看到你的程序了。
 
想法让你的程序工作在ring0级别
 
To qqjm:

谢谢您的帮助,的确是因为“允许服务与桌面交互”没有勾选的原因

我还有一个问题,我把我写的服务程序移到其他电脑上,如何把它注册为服务?在本机上我是通过delphi编辑的时候加/install参数实现的。

我在其他电脑上双击我的服务程序,没有任何反应
 
在开始-->运行 里写
程序完整路径 /install
 
谢了!!散分了!
 
多人接受答案了。
 
后退
顶部