.net - 如何以管理员身份从 Worker Service 执行控制台应用程序?
问题描述
我有一个具有自动更新功能的 Worker 服务。只要有可用的更新,它就需要在管理员模式下调用 Installer.exe,这是一个控制台应用程序(引用项目)。每当我将 Intaller.exe 作为独立控制台应用程序运行时,它都会工作,但是当从工作服务调用它时,它甚至不会被调用。
我知道它不起作用的方式是安装程序应用程序的第一个任务是停止工作服务,但它并没有停止。
我尝试在 Installer.exe 和 Worker Service 中包含 app.manifest,以管理员身份运行它们,但这并没有改变任何事情。
这就是我调用安装程序应用程序的方式。
string installerPath = Directory.GetCurrentDirectory() + @"\" + "Installer.exe";
Log.Debug("Installer Path: {0}", installerPath);
var installProcess = new ProcessStartInfo();
installProcess.FileName = installerPath;
installProcess.CreateNoWindow = false;
installProcess.WindowStyle = ProcessWindowStyle.Normal;
installProcess.UseShellExecute = true;
installProcess.Verb = "runas";
Log.Debug("Update process started.This service will shutdown now.");
var process = Process.Start(installProcess);
process.WaitForExit();
process.Close();
我在这里做错了什么?或者不可能做到这一点?
解决方案
推荐阅读
- algorithm - Find the all possible multiples( size of n ) of a positive integer k
- compilation - 无法使用库编译
- c - CreateFile() 和 CreateFileA() 有什么区别?
- python - Python中如何及时去除T和Z
- javascript - 视频标签加载元数据事件不适用于多个视频标签
- c# - 将数据传递给控制器失败(正在使用元组)
- java - Android Studio 原始文件错误背景音乐
- javascript - 遍历对象数组,检查匹配的参数并将匹配的对象添加到新数组
- java - 除了单词开头的元音之外,我如何从字符串中排除元音?
- html - 内联块不起作用