Empêcher l'utilisateur de processus de la mort avec “terminer le Processus” de l'Explorateur de Processus
J'ai remarqué que GoogleToolbarNotifier.exe ne peut pas être tué de Process Explorer. Il retourne "Accès Refusé". Il s'exécute en tant qu'utilisateur, il exécute "Normal" la priorité, et il fonctionne à partir de Fichiers de Programme.
Comment ont-ils fait?
Je pense qu'il y a peut-être un moyen de modifier les ACL, ou la marque, le processus de "critique", mais je n'arrive pas à le localiser quoi que ce soit.
Mise à jour:
J'ai trouvé la réponse avec un bon peu de creuser. @Alex K. a été correct en ce que PROCESS_TERMINATE autorisation a été supprimé pour le processus, mais je voulais d'approvisionnement de la réponse dans le code:
static const bool ProtectProcess()
{
HANDLE hProcess = GetCurrentProcess();
EXPLICIT_ACCESS denyAccess = {0};
DWORD dwAccessPermissions = GENERIC_WRITE|PROCESS_ALL_ACCESS|WRITE_DAC|DELETE|WRITE_OWNER|READ_CONTROL;
BuildExplicitAccessWithName( &denyAccess, _T("CURRENT_USER"), dwAccessPermissions, DENY_ACCESS, NO_INHERITANCE );
PACL pTempDacl = NULL;
DWORD dwErr = 0;
dwErr = SetEntriesInAcl( 1, &denyAccess, NULL, &pTempDacl );
//check dwErr...
dwErr = SetSecurityInfo( hProcess, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pTempDacl, NULL );
//check dwErr...
LocalFree( pTempDacl );
CloseHandle( hProcess );
return dwErr == ERROR_SUCCESS;
}
Est-il en cours d'exécution avec des autorisations d'administrateur et de PE n'est-ce pas?
PE est en cours d'exécution avec l'admin (élevée) des autorisations. Le processus est normal d'utilisateur non-administrateur.
il fonctionne très bien, merci. vous devriez poster une réponse et de l'accepter
Vous ne devez pas fermer le handle de processus récupéré par la fonction getcurrentprocess puisque c'est un pseudo de la poignée.
Merci de poster votre réponse dans une réponse, non pas dans la question.
PE est en cours d'exécution avec l'admin (élevée) des autorisations. Le processus est normal d'utilisateur non-administrateur.
il fonctionne très bien, merci. vous devriez poster une réponse et de l'accepter
Vous ne devez pas fermer le handle de processus récupéré par la fonction getcurrentprocess puisque c'est un pseudo de la poignée.
Merci de poster votre réponse dans une réponse, non pas dans la question.
OriginalL'auteur Blazes | 2011-05-31
Vous devez vous connecter pour publier un commentaire.
Lors de l'exécution de ma copie de ce qui a Refuser ensemble sur le mettre fin à autorisation (Explorateur de Processus affiche).
Sans doute qu'ils appellent
SetKernelObjectSecurity
de modifier/supprimer les droits d'accès lors de leur processus de charge.Vous a donné le crédit parce que vous aviez raison à propos de la PROCESS_TERMINATE autorisation. J'ai finalement trouvé le code pour le faire...
OriginalL'auteur Alex K.
Le code donné dans la question est trompeuse. Il construit une liste DACL sans permettre les entrées et une entrée de refus; que peut avoir du sens si vous étiez l'application de la liste dans un fichier avec l'héritage activé, mais dans ce cas, le refuser l'entrée est redondante. Dans les Fenêtres modèle de contrôle d'accès, si une DACL existe mais ne contient pas de correspondance ACE, l'accès est refusé implicitement.
Voici ma version, qui applique une DACL vide, refusant tout accès. (Notez qu'il retourne un code d'erreur plutôt que d'un booléen.)
avez-vous été connecté en tant qu'administrateur? XP n'a pas de contrôle de compte d'utilisateur, donc si vous êtes connecté avec les droits d'administration puis l'Explorateur de Processus est exécuté avec les droits d'administration. Comme wj32 déjà noté, si Process Explorer est en cours d'exécution avec les droits d'administration le processus des autorisations sont contournés. C'est par la conception.
le Gestionnaire des Tâches de Windows 10 auto-élève, donc si votre compte dispose des privilèges d'administration - ce qui elle va, sauf peut-être dans un environnement d'entreprise - puis Gestionnaire des Tâches sera toujours capable de tuer un processus, indépendamment des autorisations. (Sur Windows 7 vous avez eu à demander le Gestionnaire des Tâches pour élever via l'option "Afficher les processus de tous les utilisateurs".)
OriginalL'auteur Harry Johnston
J'ai essayé de le faire avec l'aide de l'écriture, les services de windows ..et puis de faire quelques changements
voici le lien pour écrire un simple service windows
http://code.msdn.microsoft.com/windowsdesktop/CppWindowsService-cacf4948
et nous pouvons mettre à jour Servicabase.cpp fichier avec les deux instructions suivantes..
fCanStop=FALSE;
fCanShutdown=FALSE;
Cela n'affecte pas le Processus de l'Explorateur, il affectera seulement le Service administratif de l'outil (et l'équivalent des outils tels que
sc
). Donc, il n'est pas pertinent pour cette question.OriginalL'auteur Raghav Guar