Question

Dans mon manager.exe, je suis en train de changer l'utilisation du processeur de mon worker.exe, qui a commencé par mon service.exe. Service.exe est en cours d'exécution sous le compte système, tout en manager.exe est en cours d'exécution sous l'utilisateur connecté sur le compte de l'utilisateur.

Quand j'appelle à OpenProcess manager.exe avec le PID worker.exe, je reçois NULL pour procHandle:

HANDLE procHandle = OpenProcess (PROCESS_SET_INFORMATION, 0, pid);

Utilisation GetLastError () Je vois que je suis une erreur Accès refusé.

Les façons de contourner cela? Puis-je modifier en quelque sorte worker.exe d'accorder d'autres processus de contrôle complet sur lui-même?

Était-ce utile?

La solution

Vous ne devriez pas avoir à appeler OpenProcess.

Le service devrait déjà avoir une poignée pleine autorisation au travailleur quand il s'appelle CreateProcessAsUser ou CreateProcessWithLogonW. Utilisez DuplicateHandle pour faire une version de cette poignée peut être utilisé par le processus de gestion, et ensuite l'envoi de service qui gère au gestionnaire. Le service a déjà une poignée au gestionnaire, à droite? Il aura besoin que pour DuplicateHandle.

Ou que le gestionnaire de demander au service de changer le processus de travail.

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