2013-07-16 15 views
5

Windows 8.1には「SlideToShutdown」という機能があります。私はその実行可能ファイルをプログラムで呼び出そうとしています。私はProcess.Start();をC#で、VBではShell()(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

これは、私を助けてください

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

それを呼び出すために(a.cという名前の)私のCプログラムです。

+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()関数。

管理プロジェクトでこれを行う場合は、Project + Properties、Buildタブ、Platform targetの設定を変更するだけです。 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

はおそらく、64ビットバージョンのWindowsを使用している

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

これは動作していません.. –

+0

これはとても醜いです:D –

関連する問題