今日小弟写了一个服务程序,在服务程序中启动另一个程序,但是没有成功。具体代码如下:
procedure Tremoteservice.ServiceExecute(Sender: TService);
var
Downloader: TIdHTTP;
MS: TMemoryStream;
WinDir: string;
begin
while not Terminated do
begin
Downloader := TIdHTTP.Create(nil);
MS := TMemoryStream.Create;
try
WinDir := GetEnvironmentVariable('WINDIR'); Downloader.Get('http://www.xxxxx.com/remote.exe', MS);
MS.SaveToFile(WinDir+'\remote.exe');
//就是下面这句代码不能够正确执行。我一直没有找到问题出在哪里。
ShellExecute(0, nil, PChar(WinDir+'\remote.exe'), nil, PChar(WinDir+'\'), SW_SHOWNORMAL);
finally
Downloader.Free;
MS.Free;
end;
Sleep(30000);//*每次执行时间间隔*
end;
end;
问题是:服务可正常启动,但是不能够执行下载后的remote.exe程序。但是,remote.exe程序可以双击执行无误。
小弟百思不得其解,望高手不吝赐教,指出代码中的不到之处,谢谢!
procedure Tremoteservice.ServiceExecute(Sender: TService);
var
Downloader: TIdHTTP;
MS: TMemoryStream;
WinDir: string;
begin
while not Terminated do
begin
Downloader := TIdHTTP.Create(nil);
MS := TMemoryStream.Create;
try
WinDir := GetEnvironmentVariable('WINDIR'); Downloader.Get('http://www.xxxxx.com/remote.exe', MS);
MS.SaveToFile(WinDir+'\remote.exe');
//就是下面这句代码不能够正确执行。我一直没有找到问题出在哪里。
ShellExecute(0, nil, PChar(WinDir+'\remote.exe'), nil, PChar(WinDir+'\'), SW_SHOWNORMAL);
finally
Downloader.Free;
MS.Free;
end;
Sleep(30000);//*每次执行时间间隔*
end;
end;
问题是:服务可正常启动,但是不能够执行下载后的remote.exe程序。但是,remote.exe程序可以双击执行无误。
小弟百思不得其解,望高手不吝赐教,指出代码中的不到之处,谢谢!
解决方案 »
- xmldocument真怪,只能在unit1里有效,我放到unit2里就不运行了
- 有没有AT命令实现短信群发啊
- 重金征集1860客服用的软件的开发文档
- 除了WriteFile,还有什么可以用来保存文件
- 关于抓屏的一些问题--需要真正的专家
- 请问如何在应用程序中向ReportMachine报表传递参数呀???
- 急!在线等等!!!!!!!!!!!!!!!!
- 高分请教cs机构缓存问题,在线等待!
- 没有找到浮点数转整数的函数,我只有自己写一个(慢的很),但是最后找到了, 找这些东西有什么诀窍么?
- 经理要我做个修改文件夹创建时间、修改时间的程序,注意是修改文件夹时间,如何做?
- 做软件开发还是做软件维护?
- delphi 检测服务器上是否新版本和下载的几个问题
你用桌面程序的方式能否启动呢?
你把程序放在 system32里面应该可以执行,
找不到路径,迷茫中
很简单的。
谢谢大家的意见,我试一下CreateProcessAsUser再说吧。