Показать сообщение отдельно

  #2060  
Старый 22.12.2008, 15:35
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
С нами: 9746420

Репутация: 119
По умолчанию

Вот, весь код:
Код:
#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>

#define dwPID 4

void chPriv(int res);

int main(int argc, char* argv[])
{
        MODULEENTRY32 mod;
        LPVOID lpMsgBuf;

        HANDLE snap = INVALID_HANDLE_VALUE;

        chPriv(1);
        snap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
        if(snap == INVALID_HANDLE_VALUE)
        {
                FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
			FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
			NULL, GetLastError(), 0, (LPTSTR)&lpMsgBuf, 0, NULL);
                MessageBox(NULL, (LPCTSTR)lpMsgBuf, TEXT("Error"), MB_OK | MB_ICONERROR);
		LocalFree(lpMsgBuf);

                return 1;
        }
        mod.dwSize = sizeof( MODULEENTRY32 );
        if( !Module32First(snap, &mod) )
        {
                printf("Module32First: %d\n", GetLastError());
                CloseHandle(snap);
                return 1;
        }
        do
        {
                printf("%s\t", mod.szModule);
                printf("0x%X\n", mod.modBaseAddr);
        }
        while( Module32Next(snap, &mod));
        chPriv(0);
        CloseHandle(snap);
        getchar();
        return 0;
}

void chPriv(int res)
{
       	HANDLE hToken;
       	if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
       	{
               	TOKEN_PRIVILEGES priv;
       	       	priv.PrivilegeCount = 1;
       	       	LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &priv.Privileges[0].Luid);
       	        if(res)
               	     priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
       	        else
               	     priv.Privileges[0].Attributes = 0;
       	       	AdjustTokenPrivileges(hToken, 0, &priv, sizeof(priv), NULL, NULL);
               	CloseHandle(hToken);
}
}
 
Ответить с цитированием