Question

J'ai lu quelques articles sur la façon de vérifier si un processus est sorti d'un processus différent (je me rends compte que certaines personnes sont accrochées à la sémantique ici, mais je m'humais) et j'ai essayé de l'implémenter mais je rencontre le code d'erreur 5 5 ("Error_access_dened") partout.

Voici ce que je fais.

1) Le processus 1 (P1) lance le processus 2 et écrit à un emplacement de mémoire partagé son propre PID.

2) Le processus 2 (P2) lit le PID à partir de la mémoire partagée

3) P2 appelle OpenProcess (...) avec P1 PID pour enregistrer une poignée qu'il peut vérifier plus tard.

4) P2 appelle GetExitCodeProcess (...) avec le PID de P1 à plusieurs reprises et vérifie un code Still_Active.

Dans la méthode ci-dessus, je continue d'obtenir l'erreur Access_denided sur getExitCodeProcess. J'ai essayé de modifier les privilèges de P2 en utilisant le code ci-dessous des documents de MSDN:

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);

Mais je continue d'obtenir l'erreur Access_denided sur l'appel à OpenProcessToken (...). Cela indique-t-il donc une sorte d'obstacle au niveau du système? J'ai des droits d'administration sur ma machine et j'exécute XP.

Merci d'avance pour votre aide.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top