安装德尔福服务的可执行文件的路径
问题描述:
有什么方法可以将德尔福服务的可执行路径放在双引号中吗?安装德尔福服务的可执行文件的路径
我创建了一个Delphi服务并使用/ install参数进行安装。
如果我通过Windows服务查看属性,则可执行文件的路径不包含在双引号中。
如何在Delphi中做到这一点?
我用Delphi 7和Windows 2012
答
TService
不支持在安装时自定义安装路径。您必须使用TService.AfterInstall
事件直接编辑注册表。您可以使用ParamStr(0)
获取可执行文件路径,然后使用AnsiQuotedStr()
向其添加双引号。
procedure TMyService.ServiceAfterInstall(Sender: TService);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.Access := KEY_SET_VALUE;
if Reg.OpenKey('\SYSTEM\CurrentControlSet\Services\'+Sender.Name, False) then
try
Reg.WriteString('ImagePath', AnsiQuoutedStr(ParamStr(0), '"'));
finally
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
+0
这是否照顾32位操作系统?我认为注册表位置会有所不同。 – ewlung
+0
@ewlung不,它没有什么不同。 HKLM \ System不会分为单独的32位和64位密钥 –
为什么你会觉得在这里使用引号的任何要求?你是否在服务中包含了命令行的参数? –