2013-12-09 14 views
0

如果我使用C++ Windows API「CreateProcess」或C運行時庫「system」啓動大多數進程,它們運行良好。但是,如果我使用相同的啓動openfiles.exe在Windows 7和8下的「openfiles.exe/query」,它永遠不會工作。它抱怨需要運行32位操作系統,或者如果我用runas升級它,我會得到無效函數。在Win 7和Win 8下,openfiles.exe確實有些奇怪,儘管它在命令提示符下工作正常,但它在從另一個進程啓動時從不運行。爲什麼?在Windows 7和8下,openfiles.exe不能被其他應用程序啓動。

+1

我懷疑這是32位和64位可執行文件的問題。 IIRC,即使在64位系統上,openfiles.exe也是一個32位exe文件。查看CreateProcess標誌並確保你爲32/64位上下文做了正確的事情。 – JimR

+0

當您嘗試在64位操作系統上運行16位程序時,會出現這種錯誤。在你的機器上尋找一個名爲「openfiles.com」的文件。 –

+0

在Win 7 32位下,問題仍然存在。錯誤消息是一個紅色的鯡魚。 –

回答

1

看來在Windows 64位下,應用程序也必須是64位的(不確定是否適用於32位操作系統)。

我的系統是Windows 7 64位,如果我用「目標平臺」設置爲「64位Windows」構建我的應用程序,以下工作。

::ShellExecuteW(this->Handle, NULL, L"openfiles.exe", L"/query", NULL, SW_SHOWNORMAL); 

我相信其他啓動選項也可以像CreateProcess一樣工作。

但是,當您構建爲32位應用程序時,會給出同樣的錯誤。

+0

我相信這是正確的答案。謝謝! –

相關問題