代码之家  ›  专栏  ›  技术社区  ›  Jeldrik

在Vista下安装服务并添加注册表项+

  •  0
  • Jeldrik  · 技术社区  · 15 年前

    我有一个作为桌面应用程序运行的程序,但也可以作为windows服务安装。安装是通过使用GUI上的“installaservice”按钮完成的。此按钮的事件处理程序如下所示:

    ProcessStartInfo psi = new ProcessStartInfo("sc", "description " + 
       this.ServiceName + "  \"" + 
          ((AssemblyDescriptionAttribute)attributes[0]).Description + "\"") 
    psi.CreateNoWindow = true;
    psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    psi.Verb = "runas";
    Process.Start(psi).WaitForExit();    
    

    我现在要做的是在say下面添加一些附加的注册表项:

    HKLM\SOFTWARE\MyCompany\Services
    

    这也需要提升特权。但是如果我使用与上面描述的相同的过程来命令“REG ADD”,那么UAC对话框将出现不止一次——我不希望这样。

    那么,在只有一次UAC提示的情况下,在HKLM下安装windows服务并添加注册表项的最佳方法是什么?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Kate Gregory    15 年前

    创建一个小的exe或一个同时执行这两项操作(sc和reg更新)的批处理文件。发射 那个 而不是sc。

        2
  •  1
  •   Sergey Mirvoda    15 年前

    至于安装服务。
    你可以试试 topshelf . 它使用方便,功能强大。

        3
  •  0
  •   Jeldrik    13 年前

    最后我用管理特权和一个特殊参数给自己打电话 myprogram.exe -i 然后分支到一个特殊的方法,该方法使用 ServiceInstaller 类将程序作为服务安装(而不是调用sc)。