以管理员身份运行.bat后如何获得结果 - C#

时间:2017-09-23 01:04:18

标签: c# batch-file admin

我正在尝试获得结果,是或否,用户在以管理员身份运行时按下以回答程序。

实施例: IMAGE

我正在尝试使用以下代码:

var processInstall = new ProcessStartInfo();
            processInstall.CreateNoWindow = true;
            processInstall.FileName = "myBatchFileAddress";
            processInstall.Verb = "runas";
            var process = new Process();
            process.StartInfo = processInstall;
            process.Start();
            process.WaitForExit();
            //Here I must deal  with the result of user, if is yes or no

1 个答案:

答案 0 :(得分:0)

批处理文件是一项非常古老的技术。 字面与DOS一样古老。因此,就其性质而言,沟通的能力是有限的。

DOS时代程序主要通过“ERRORLEVEL”进行通信。 Console程序中的返回仍会影响所述错误级别。返回0表示“没问题”。还有其他问题。批处理文件可以检查它。而且我90%的某些窗口实际上仍然使用它 - 如果一个设置返回0以外的任何东西,它会问“我应该再次使用兼容性设置吗?”使用EXIT,您可以定义批处理文件“返回”的ERRORLEVEL。

然而,还有另一种方法,取决于程序的详细程度:IO redirection

请记住批量文件已被解释。所以你要运行 console 程序,然后命令运行teh console(通常作为带有完整路径的参数;有关详细信息,请参阅控制台文档)。

最后执行任何批处理文件作为管理员倾向于完全搞砸了路径。批处理文件必须是designed to compensate

当然,如果这些程序是由您自己编写的,那么您可以使用Interprocess Communication等选项。但我认为现在情​​况并非如此。

编辑:我似乎错过了这个问题。如果程序由于Manifest要求Adminsitrative权限或者使用runas运行但是高程被拒绝,则执行永远不会完成。该程序甚至没有由Windows启动。它甚至可以不加载到内存中。