C# 无法以编程方式调用特定的exe文件
Windows 8.1附带了一个名为“SlideToShutdown”的功能。我试图以编程方式调用该可执行文件。我尝试了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时,在命令提示下,它工作得非常好 这
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