visuel c ++ - Systemtjeneste privilege for at få procesoplysninger i Windows 7

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at bruge systemtjeneste privilegier for at få titlen på et vindue og dets procesnavn og proces ID i Windows 7, men det fejler.


Hvordan kan jeg bruge åben proces til at få procesoplysninger via systemtjeneste privilegier?

Bedste reference


For at få anden procesinformation skal du aktivere SeDebugPrivilege til dit program.


Denne kode vil gøre det muligt for dig:


{
    int             err             = 0;
    int             result              = 0;
    HANDLE          token               = NULL;
    HANDLE          proc\_handle         = NULL;
    TOKEN\_PRIVILEGES        priv;

    /*Get the open process handle to the process*/
    proc\_handle = GetCurrentProcess ();

    /* Get a token for this process.*/
    result = OpenProcessToken (proc\_handle, TOKEN\_ALL\_ACCESS, &token);
    if (! result)
    {
    /* return failure */
    }

    /* Get the LUID for the SeDebugPrivilege privilege.*/
    result = LookupPrivilegeValue (NULL, SE\_DEBUG\_NAME,
        &priv.Privileges[0].Luid);
    if (! result)
    {
    err = qerr\_win32toq (GetLastError ());
    printf("LookupPrivilegeValue failed with err: \%d", err);

    goto out;
    }

    priv.PrivilegeCount = 1;
    priv.Privileges[0].Attributes = SE\_PRIVILEGE\_ENABLED;

    result = AdjustTokenPrivileges (token, FALSE, &priv, 0, (PTOKEN\_PRIVILEGES)
        NULL, 0);
    if (! result)
    {
    err = qerr\_win32toq (GetLastError ());
    printf ("AdjustTokenPrivilege failed with err: \%d", err);

    goto out;
    }

out:
    if (token)
    CloseHandle (token);

    return err;
}