对于直接更改注册表,无需重新启动,我发现,使用的Process.Start(...)抛出“系统找不到指定文件”
cmd.exe /c taskkill.exe /f /im explorer.exe & explorer.exe
正好做我想要的电脑。
我看,你不能使用像cmd.exe
文件,而他们的整个路径,因为他们没有一个PATH值和System32下文件夹不存在。
const string explorer = @"C:\Windows\explorer.exe";
string taskkill = "", commandprompt = "";
var task1 = Task.Run(() =>
taskkill = Directory.GetDirectories(@"C:\Windows\WinSxS", "*microsoft-windows-taskkill_*")[0] + @"\taskkill.exe");
var task2 = Task.Run(() =>
commandprompt = Directory.GetDirectories(@"C:\Windows\WinSxS", "*microsoft-windows-commandprompt_*")[0] + @"\cmd.exe");
Task.WaitAll(task1, task2);
Process.Start(string.Format($"{commandprompt} /c {taskkill} /f /im {explorer} & {explorer}"));
但是运行这段代码抛出
"The system cannot find the file specified"
将不胜感激,如果有人可以帮助我解决这个问题!
编辑#1:通过改变作为回答代码
Process.Start(commandprompt, string.Format($"/c {taskkill} /f /im {explorer} & {explorer}"));
,命令提示符只对第二ANS打开类似于“的请求无效”,之后的探险家窗口打开。
不知道是否有其他的问题,但最主要的是,如果你想带参数运行的Process.Start - 你必须通过两个参数:文件名和参数。所以你的情况首先是'commandprompt',其次是所有其余的。 – Evk