2013-07-16 68 views
5

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時,它在命令提示符下運行完美。無法以編程方式調用特定的exe文件

enter image description here

這是我的C程序(取名爲交流轉換器)來調用它

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

請幫助我。

+0

什麼是標籤?這看起來像C. – dandan78

+0

@ dandan78 OP嘗試C#,VB.NET和C.他可能想要在任何這些語言的解決方案。 – Stijn

+0

@你是對的,我的錯。 – dandan78

回答

1

。然而你的程序是一個32位的程序。它受到file system redirection的限制,它實際上將在程序的c:\ windows \ syswow64目錄中查找。 32位可執行文件的主目錄。它不存在的地方。

解決方法是使用c:\windows\sysnative\slidetoshutdown.exe。目錄名稱的「sysnative」部分將映射到32位進程的system32。你應該在技術上查找主目錄,它不一定是c:\ windows。 GetWindowsDirectory()函數。

如果您在託管項目中執行此操作,只需更改項目+屬性,生成選項卡,平臺目標設置。對AnyCPU感興趣,關閉VS2012及更高版本的「首選32位」選項。這將使您的程序以64位進程運行,因此不會被重定向。現在簡單Process.Start(「slidetoshutdown.exe」)將工作。創建64位C程序也不難,只需將目標平臺更改爲x64即可。

0

你可能已經嘗試過這個,反正我建議:

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

+0

我試圖不工作..! –

+0

http://msdn.microsoft.com/en-us/library/96ayss4b%28v=vs.100%29.aspx? –

0

試,你就可能使用的是Windows的64位版本繼

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

這不工作.. –

+0

這看起來很醜陋:D –

相關問題