我正在尝试强制由WiX捆绑包触发的WPF exe作为管理员运行,因为它需要能够重新启动服务。在有人问为什么这是在一个单独的exe中运行之前,遗憾的是我没有时间学习如何构建自定义引导程序。
到目前为止,我已尝试使用此行向app添加app.manifest文件:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
当它没有工作时,我查看了捆绑包中的exepackage以检查它是否配置为以管理员身份运行(PerMachine应该以提升的方式运行它):
<ExePackage Id="MMAConfigure"
DisplayName="Configuring Microsoft Monitoring Agent"
Compressed="yes"
PerMachine="yes"
Vital="yes"
SourceFile="$(var.PowerOnHybridWorkerConfigure.TargetDir)PowerOnHybridWorkerConfigure.exe"
DetectCondition="HybridWorkerConfigured"
UninstallCommand="Uninstall" />
最后这是重启服务的代码,如果我在带有管理员权限的捆绑包之外运行WPF exe,那么它每次都有效:
public async Task<string> StartService(string serviceName, int timeoutMilliseconds)
{
ServiceController service = new ServiceController(serviceName);
try
{
TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
return "Success";
}
catch (Exception e)
{
return e.Message;
}
}