我正在尝试获得结果,是或否,用户在以管理员身份运行时按下以回答程序。
实施例: 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
答案 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启动。它甚至可以不加载到内存中。