用jsp做的网站需要什么工具,大数据获客系统,浙江品牌网站建设,北京pk10网站建设C#运行ps1文件命令#xff0c;一般都直接启动进程#xff0c;以管理员身份调用powershell。 有两种方式#xff0c;一种直接在ps1文件中指定管理员身份#xff0c;比如ps1文件为#xff1a; Start-Process powershell -ArgumentList get-windowsoptionalfeature -online -…C#运行ps1文件命令一般都直接启动进程以管理员身份调用powershell。 有两种方式一种直接在ps1文件中指定管理员身份比如ps1文件为 Start-Process powershell -ArgumentList get-windowsoptionalfeature -online -verb RunAs然后使用process调用即可但是这种方法无法捕获用户不同意管理员权限的信息。 第二种方法在代码中指定管理员权限加上try catch可以捕获用户不同意的信息需要注意的是 1UseShellExecute属性是获取或设置指示是否使用操作系统 shell 启动进程的值需要以管理员身份执行命令或执行的命令不是可执行文件时此值必须为true。 2UseShellExecute属性设置为true重定向输入、输出和错误流属性均无效所以也不需要设置由此无法获取到执行结果。 3如果 UseShellExecute 属性为 true则将忽略 CreateNoWindow 属性值并创建一个新窗口所以设置窗口不可见属性也是没有用的必将创建窗口。 4Arguments 属性可以是一个文件也可以是一个命令但是我如果设置它是一个文件文件中输入命令执行时在win10的电脑可以正常执行但是在win11的电脑允许管理员权限之后powershell窗口会闪退不知道原因是什么所以还是直接把命令以字符串形式赋予Arguments 属性或者如果命令在文件中直接使用ReadAllText属性以字符串读取出来。 代码如下
try{Process proc new Process();ProcessStartInfo startInfo new ProcessStartInfo();proc.StartInfo.FileName powershell.exe;proc.StartInfo.Arguments get-windowsoptionalfeature -online;proc.StartInfo.UseShellExecute true;proc.StartInfo.Verb runas; // 请求以管理员权限运行proc.Start();proc.WaitForExit();
}
catch{//弹出UAC窗口时用户点了不同意textBlock1.Text (获取管理员权限失败);
}关于以管理员身份执行命令这一块这段时间总算是搞明白了。