Windows.System32文件夹中的Process.Start

时间:2014-01-09 17:51:05

标签: c#

尝试以管理员身份启动位于System32中的文件,但它一直告诉我它不存在。

错误:系统找不到指定的文件 构建目标平台是:x86。 当前操作系统:Windows 8.1 x64。对于32位和64位操作系统,我宁愿没有2个不同的.exes。

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纠正了问题

2 个答案:

答案 0 :(得分:3)

我的猜测是你在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")

答案 1 :(得分:0)

使用function createSite($template_id) { //create array with data $data = array("template_id"=>$template_id); //turn data into json to pass via cURL $data = json_encode($data); print $data; //Set cURL parameters $ch = curl_init(); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL,'https://api.duda.co/api/sites/multiscreen/create'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, API_USER.':'.API_PASS); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); //execute cURL call and get template_idte data $output = curl_exec($ch); //check for errors in cURL if(curl_errno($ch)) { die('Curl error: ' . curl_error($ch)); } //decode result $output = json_decode($output); //return unique site_name return $output->site_name;

Environment.SystemDirectory