2010-07-30 2 views
1

J'ai enregistré une DLL de menu contextuel COM (pour afficher les menus contextuels Explorer) dans une machine Windows7. Dans la DLL, j'ai vérifié si un service est en cours d'exécution dans mon système. Le service s'exécute sous "Compte système local". J'ai vérifié l'état du service par OpenSCManager et QueryServiceStatus. Il semble fonctionner sous XP sans aucun problème. Mais dans Windows7, parfois je reçois une erreur 'Accès refusé' et parfois je reçois le mauvais résultat ... (par exemple, le service est en cours d'exécution mais il affiche le statut lorsque le service est arrêté.) Je ne sais pas comment vérifier cela dans Windows7.Le service de vérification s'exécute à partir d'une DLL

J'ai également vérifié si mon exe est en cours d'exécution par

HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, aProcesses[i]); 

mais c'est aussi ne fonctionne pas dans Windows7 quand je suis en cours d'exécution en tant que service.

Quelqu'un pourrait-il me mettre à jour comment vérifier si le service fonctionne via DLL?

Remarque: La DLL est chargée par l'Explorateur.

Répondre

0

Vous pouvez être en cours d'exécution dans l'UAC (http://en.wikipedia.org/wiki/User_Account_Control), ce qui peut limiter votre accès aux services à partir d'un contexte non administratif. Votre application fonctionne-t-elle lorsque vous exécutez Explorer en tant qu'administrateur?

Questions connexes