我有一个作为桌面应用程序运行的程序,但也可以作为Windows服务安装。通过在GUI上使用“作为服务安装”按钮来完成安装。此按钮的事件处理程序是这样的:在Vista下安装服务并添加注册表项+
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();
我想现在要做的是增加下说出一些其他注册表项:
HKLM\SOFTWARE\MyCompany\Services
这也需要更高的权限。但是,如果我使用与上述相同的过程并使用命令“REG ADD”,那么UAC对话框将不止一次出现 - 我不想这样做。
那么最好的方式来安装一个Windows服务,并在HKLM下添加一个注册表项,只有一次UAC提示?
感谢您的回答。这似乎是明显的解决方案,但我想避免这种情况,因为代码位于共享库中。如果我不得不依赖诸如批处理文件或exe之类的其他组件,它会使部署复杂化。 – Jeldrik 2010-11-24 09:18:01