C# 无法以编程方式调用特定的exe文件

C# 无法以编程方式调用特定的exe文件,c#,c,vb.net,windows-8.1,C#,C,Vb.net,Windows 8.1,Windows 8.1附带了一个名为“SlideToShutdown”的功能。我试图以编程方式调用该可执行文件。我尝试了Process.Start()、VB中的Shell()和(void)system()在C中。 它表示错误,因为'C:\Windows\System32\SlideToShutdown.exe'未被识别为内部或外部命令、可操作程序或批处理文件但是当我执行start C:\windows\system32\slidetoshutdown.exe时,在命令提示下,它工作得非常好 这

Windows 8.1附带了一个名为“SlideToShutdown”的功能。我试图以编程方式调用该可执行文件。我尝试了
Process.Start()、VB中的
Shell()
(void)system()在C中。


它表示错误,因为
'C:\Windows\System32\SlideToShutdown.exe'未被识别为内部或外部命令、可操作程序或批处理文件


但是当我执行
start C:\windows\system32\slidetoshutdown.exe时,在命令提示下,它工作得非常好

这是我的C程序(名为a.C)来调用它

#include <stdlib.h>
#include <stdio.h>
int main()
{
    (void)system("C:\\Windows\\System32\\SlideToShutDown.exe");
    return(0);
}
#包括
#包括
int main()
{
(无效)系统(“C:\\Windows\\System32\\SlideToShutDown.exe”);
返回(0);
}

请帮帮我。

你可能已经试过了,无论如何,我建议:

system("start C:\\windows\\system32\\slidetoshutdown.exe");

尝试以下内容

System.Diagnostics.Process.Start("start","C:\\windows\\system32\\slidetoshutdown.exe")

您可能正在使用64位版本的Windows。然而,您的程序是一个32位进程。它将在c:\windows\syswow64目录中查找程序。32位可执行文件的主目录。它不存在的地方

解决方法是使用
c:\windows\sysnative\slidetoshutdown.exe
。对于32位进程,目录名的“sysnative”部分将映射到system32。从技术上讲,您还应该查找主目录,它不一定是c:\windows。GetWindowsDirectory()函数


如果在托管项目中执行此操作,则只需更改项目+属性、构建选项卡、平台目标设置。对于VS2012及以上版本,请关闭“首选32位”选项。这将使您的程序作为64位进程运行,因此不会被重定向。现在只要Process.Start(“slidetoshutdown.exe”)就可以了。创建64位C程序也不难,只需将目标平台更改为x64即可。

标签有什么用?这看起来像是C.@dandan78 OP尝试了C#、VB.NET和C。他可能想要这些语言中的任何一种的解决方案。@Stijn、启动记事本、mspaint都工作正常。但只有特定的exe文件不起作用。请仔细阅读标题“无法通过编程调用特定的exe文件”放松,无需大喊大叫。Win8.1上有人能确认吗?太奇怪了。另外,也许你可以试着用PE编辑器查看它,看看这是否是一个有效的可执行文件?这看起来太难看了:D