我有一个基于Deplhi的Windows服务,在安装时会解析一些命令行参数.我希望将这些参数添加到服务命令行(注册表中的ImagePath值),以便始终使用它们启动服务.
我怎么能做到这一点?
我希望regedit看起来像这样:
在注册表项HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MyService
ImagePath = C:\Path\to\my\service.exe -some -arguments
谢谢
更新:安装完成>MyService.exe /install -some -arguments
.那些参数是我想在命令行中持久存在的.
更新:我通过直接写入注册表找到了解决方案(请参阅此处),但我仍然想要一个更优雅的解决方案,例如使用某些TService属性或类似的东西.谢谢!
好吧,经过一些研究,我放弃了一种优雅的方法,并采取了直接写入注册表的直接路径.
为了简单起见,我这样做了:我在TService上存储了我想传递变量的参数.然后,我设置AfterInstall事件直接写入注册表(使用TRegistry对象)我想要的确切命令行.
uses Registry; procedure MyService.AfterInstall(Sender: TObject) ; var reg:TRegistry; begin reg := TRegistry.Create; try reg.RootKey := 'HKEY_LOCAL_MACHINE'; if reg.OpenKey('SYSTEM\CurrentControlSet\Services\MyService', True) then begin reg.WriteExtendString ('ImagePath', ParamStr(0) + ' -some -arguments') ; reg.CloseKey; end; finally reg.Free; end; end;
不是我想要的优雅解决方案,但它确实起了作用.
感谢您的其他答案!