質問

プロセスが別のプロセスから終了したかどうかを確認する方法についていくつかの投稿を読みました(ここでセマンティクスに夢中になっている人もいますが、ユーモアをしようとしています)。 ( "error_access_denied")あちこち。

これが私がしていることです。

1)プロセス1(P1)はプロセス2を起動し、共有メモリの場所に独自のPIDを書き込みます。

2)プロセス2(P2)は、共有メモリからPIDを読み取ります

3)P2は、P1のPIDを使用してOpenProcess(...)を呼び出して、後で確認できるハンドルを保存します。

4)P2は、P1のPIDを繰り返しgetExitCodeProcess(...)に呼び出し、Still_activeコードをチェックします。

上記の方法では、getExitCodeProcessでAccess_Deniedエラーを取得し続けます。 MSDNのドキュメントの以下のコードを使用して、P2の特権を変更しようとしました。

HANDLE proc_h = OpenProcess(SYNCHRONIZE, FALSE, GetCurrentProcessId());
HANDLE hToken;
OpenProcessToken(proc_h, TOKEN_ADJUST_PRIVILEGES, &hToken);

LookupPrivilegeValue(NULL, lpszPrivilege, &luid );

tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Enable the privilege
AdjustTokenPrivileges(hToken, 
                      FALSE, 
                      &tp, 
                      sizeof(TOKEN_PRIVILEGES), 
                      (PTOKEN_PRIVILEGES) NULL, 
                      (PDWORD) NULL);

しかし、OpenProcessToken(...)メソッドへの呼び出しでAccess_Deniedエラーを取得し続けます。それで、これは何らかのシステムレベルのハードルを示していますか?私は自分のマシンに管理者の権利を持っていて、XPを実行しています。

どんな助けにもよろしくお願いします。

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top