当前位置:  开发笔记 > 开发工具 > 正文

Delphi Windows服务命令行参数

如何解决《DelphiWindows服务命令行参数》经验,为你挑选了1个好方法。

我有一个基于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属性或类似的东西.谢谢!



1> Pablo Ventur..:

好吧,经过一些研究,我放弃了一种优雅的方法,并采取了直接写入注册表的直接路径.

为了简单起见,我这样做了:我在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;

不是我想要的优雅解决方案,但它确实起了作用.

感谢您的其他答案!

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有