2017-09-11 58 views
0

有什么方法可以将德尔福服务的可执行路径放在双引号中吗?安装德尔福服务的可执行文件的路径

我创建了一个Delphi服务并使用/ install参数进行安装。

如果我通过Windows服务查看属性,则可执行文件的路径不包含在双引号中。

如何在Delphi中做到这一点?

我用Delphi 7和Windows 2012

+1

为什么你会觉得在这里使用引号的任何要求?你是否在服务中包含了命令行的参数? –

回答

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; 
+0

这是否照顾32位操作系统?我认为注册表位置会有所不同。 – ewlung

+0

@ewlung不,它没有什么不同。 HKLM \ System不会分为单独的32位和64位密钥 –