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.

OriginalL'auteur Blazes | 2011-05-31