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

时间:2013-07-16 09:27:08

标签: c# c vb.net windows-8.1

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

它将错误称为'C:\Windows\System32\SlideToShutdown.exe' is not recognized as an internal or external command, operable program or batch file

但是在执行start C:\windows\system32\slidetoshutdown.exe时,在命令提示符下,它完美无缺。

enter image description here

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

#include <stdlib.h>
#include <stdio.h>
int main()
{
    (void)system("C:\\Windows\\System32\\SlideToShutDown.exe");
    return(0);
}

请帮帮我。

3 个答案:

答案 0 :(得分:1)

您可能正在使用64位版本的Windows。但是,您的程序是32位进程。它受file system redirection的影响,它实际上会查看程序的c:\ windows \ syswow64目录。 32位可执行文件的主目录。它不存在的地方。

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

如果您在托管项目中执行此操作,则只需更改Project + Properties,Build选项卡,Platform目标设置。赞成AnyCPU,关闭VS2012及以上的“首选32位”选项。这将使您的程序作为64位进程运行,因此不会被重定向。现在简单的Process.Start(“slidetoshutdown.exe”)将起作用。创建64位C程序也不难,只需将目标平台更改为x64。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

尝试以下

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