我需要执行具有提升权限的多个命令,例如:
所有这些动态,e。 G。第一行可以包含代理设置,包括用户名和密码,或对设置文件的任何其他修改。 (设置文件在程序文件夹中,从外部提供修改设置文件的程序。实际信息将由用户通过GUI输入。)
我想创建一个非常灵活的解决方案,使用带有重定向的stdin和stdout的cmd.exe进程。但是......它看起来像“runas”(需要ShellExecute)并且重定向输入/输出是独占的。
(另外,我注意到重定向和cmd.exe很难处理..我必须编写自己的函数,例如作为ReadLine的替代品,因为ReadLine期望最终的NewLine并等待,例如,如果有一个命令提示符(意思是你在行中有文字,如c:\ bla>但没有NewLine。但是,不知道结果是什么让写一些通用的东西变得困难。)
我能想到的有三种选择:
如何处理?
答案 0 :(得分:1)
我认为您已经诊断出了这个问题,并列举了您的可用选项。在我看来,最好的选择是使用runas
来创建一个新的提升过程,并让该过程完成工作。
另一个进程不一定是不同的可执行文件,它可能是您使用特定命令行参数启动的现有可执行文件。一旦你有另一个进程升级,你当然可以使用cmd
重定向stdin / stdout来完成工作。但是,为什么使用net stop/start
而不是服务API?您是否可以在不启动单独流程的情况下进行.config
文件修改?