有没有办法将Delphi服务的可执行路径放在双引号中?
我创建了一个Delphi服务并使用/ install参数安装它。
如果我通过Windows服务查看属性,可执行文件的路径不会用双引号括起来。
如何用Delphi方式做到这一点?
我正在使用Delphi 7和Windows 2012。
答案 0 :(得分:2)
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;