龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

查看进程令牌信息源代码(3)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
hp = htoken = INVALID_HANDLE_VALUE; if(argc 1)procID= atoi(argv[1]); else procID = GetCurrentProcessId(); if(procID == 0) { printf(" Bad Process ID provided!!"); Usage(argv[0]); } if((ret = EnableDebu

hp = htoken = INVALID_HANDLE_VALUE;
if(argc > 1)procID= atoi(argv[1]);
else procID = GetCurrentProcessId();

if(procID == 0)
{
printf(" Bad Process ID provided!! ");
Usage(argv[0]);
}

if((ret = EnableDebugPriv(1)) != 0)printf("EnableDebugPriv(1) error : 0 ", ret);
hp = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, false, procID);
ret = GetLastError();
EnableDebugPriv(0);
if(hp == NULL)
{
printf("Unable to open target process ID=0. Error : 0 ", procID, ret);
exit(0);
}

printf("Token Information of Process ID = 0. ", procID);
if(LoadPsapi())
{
ret = GetModuleFileNameExAddr(hp, NULL, buff, 1024);
if(ret)printf("Execute File Path = . ", buff);
else printf("Get Execute File Path Error : 0. ", GetLastError());
FreeLibrary(psapi);
}else printf("Cannot Get Execute File Path, Load Psapi.dll Error. ");

puts("");

ret = OpenProcessToken(hp, TOKEN_QUERY, &htoken);
if(!ret)
{
printf("OpenProcessToken QUERY error : 0 ", GetLastError());
goto exit_main;
}

if(GetUserNameFromToken(htoken, buff))
printf("User Name : ", buff);

OutPutGroupsFromToken(htoken);

OutPutPrivilegesFromToken(htoken);

size = 1024;
TOKEN_STATISTICS *tstat;
if(!GetTokenInformation(htoken, TokenStatistics, (void*)buff, size, &size))
{
printf("GetTokenInformation TokenStatistics error : 0 ", GetLastError());
goto exit_main;
}
tstat = (TOKEN_STATISTICS *)buff;
OutPutTokenType(tstat);

char src[10];
if(GetProcessTokenSource(hp, src))
printf("Token source : ", src);

exit_main:
if(htoken != INVALID_HANDLE_VALUE)CloseHandle(htoken);
if(hp != INVALID_HANDLE_VALUE)CloseHandle(hp);
return 0;
}

精彩图集

赞助商链接