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
时,在命令提示符下,它完美无缺。
这是我的C程序(名为a.c)来调用它
#include <stdlib.h>
#include <stdio.h>
int main()
{
(void)system("C:\\Windows\\System32\\SlideToShutDown.exe");
return(0);
}
请帮帮我。
答案 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")