對於直接更改註冊表,無需重新啓動,我發現,使用的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