簡體   English   中英

Windows \\ System32文件夾中的Process.Start

[英]Process.Start in Windows\System32 folder

試圖以管理員身份啟動位於System32中的文件,但它不斷告訴我該文件不存在。

錯誤:系統找不到指定的文件構建目標平台是:x86。 當前操作系統:Windows 8.1 x64。 我寧願沒有32和64位操作系統的2個不同的.exe。

p.StartInfo.Verb = "runas";
p.StartInfo.FileName =
    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System),"Defrag.exe");
    //above points to c:\windows\system32\defrag.exe
p.StartInfo.Arguments = @"c:\ /A";
p.Start();
p.WaitForExit();

我也嘗試過以下沒有運氣的事情

p.StartInfo.FileName = 
    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "sysnative", "Defrag.exe");

更新資料

將應用程序從x86切換到“任何CPU”可解決此問題

我的猜測是您正在64位計算機上運行此代碼。 如果我沒記錯的話,Environment.SpecialFolder.System變量在64位計算機上返回C:\\ Windows \\ SysWOW64。 快速搜索SysWOW64文件夾,錯誤消息是正確的,因為該文件夾中不存在“ Defrag.exe”。

為了進行測試,我建議使用一些簡單的方法,即Process.Start(@“ C:\\ Windows \\ System32 \\ defrag.exe”)

然后,您可以使用其他變量基於系統體系結構構建路徑:
String processPath = Environment.Is64BitOperatingSystem ? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.SystemX86), "Defrag.exe") : Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "Defrag.exe")

使用Environment.SystemDirectory

string filePath = Path.Combine(Environment.SystemDirectory, "defrag.exe");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM