0

すべてのプロセスを閉じるコマンドを作成しようとしていますが、うまくいきません。

#include "StdAfx.h"

int _tmain(int argc, _TCHAR* argv[])
{

     // Get the list of process identifiers.
    DWORD ExitCode;
    DWORD aProcesses[1024], cbNeeded, cProcesses;
    unsigned int i;

    if (!EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
    {
        return 1;
    }

     // Calculate how many process identifiers were returned.
    cProcesses = cbNeeded / sizeof(DWORD);

    // exit each process.

    for ( i = 0; i < cProcesses; i++ )
    {
        std::cout<<"end";
        if( aProcesses[i] != 0 )
        {
            GetExitCodeProcess(OpenProcess(PROCESS_ALL_ACCESS,false,aProcesses[i]),&ExitCode);
            ExitProcess(ExitCode);
        }
    }

}

さらに、次のエラーが表示されます。

> 'check2.exe': Loaded 'C:\Users\Barak Shriky\Documents\Visual Studio 2010\Projects\check2\Debug\check2.exe', Symbols loaded.
'check2.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Symbols loaded (source information stripped).
'check2.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Symbols loaded (source information stripped).
'check2.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Symbols loaded (source information stripped).
'check2.exe': Loaded 'C:\Windows\SysWOW64\msvcp100d.dll', Symbols loaded (source information stripped).
'check2.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded (source information stripped).
'check2.exe': Loaded 'C:\Windows\SysWOW64\psapi.dll', Symbols loaded (source information stripped).
The program '[3292] check2.exe: Native' has exited with code -858993460 (0xcccccccc).

誰かがこの問題について私を助けてくれますか?

4

3 に答える 3

4

1)エラーが発生していません

2) ExitProcessはプロセスを終了しています。ドキュメントをお読みください。

于 2013-07-15T14:59:24.017 に答える
0

正常に動作しているように見えます - システム DLL のシンボルがインストールされていないだけです。これは正常な動作です。

もちろん、実際ExitCodeに何かを設定すると、プロセスが終了した理由についてより意味のあるメッセージが表示されます。たとえば、自分のExitCode = 0xDeadBeef;プロセスが自分自身を強制終了したことがわかります。

これを行うことは非常に悪いことのように思えます (最初にプロセスを閉じるのに「成功した」と仮定すると)。なぜなら、停止するとシステムの残りの部分がうまく機能しなくなるプロセスが Windows には確かにたくさんあるからです。 . たとえば、実行可能ファイルのロード/アンロードにも使用されるページイン/アウトプロセスなど。どのプロセスを強制終了するかを少しだけ選択することは、おそらく役立つでしょう。

于 2013-07-15T15:03:06.463 に答える
0

終了プロセスを使用した以下のコードを参照してください...

// exit each process.

for ( i = 0; i < cProcesses; i++ )
{
    std::cout<<"end";
    if( aProcesses[i] != 0)
    {
       GetExitCodeProcess(OpenProcess(PROCESS_ALL_ACCESS,false,aProcesses[i]),&ExitCode);
      TerminateProcess(aProcesses[i], ExitCode);

    }
}
}
于 2013-07-15T15:09:11.767 に答える