久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

幾種獲取進(jìn)程列表的方法

 guoliyan1 2012-02-04
幾種獲取進(jìn)程列表的方法
1.CreateToolhelp32Snapshot法:
  1. // //////////////////////////////////////////////////////////////////////////
  2. // // CreateToolhelp32Snapshot 法            #include <Tlhelp32.h>
  3. // //////////////////////////////////////////////////////////////////////////

  4. PROCESSENTRY32 pe32;
  5. pe32.dwSize = sizeof(PROCESSENTRY32);
  6. BOOL bRet;
  7. HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
  8. bRet = Process32First(hProcessSnap,&pe32);
  9. while (bRet)
  10. {
  11.    bRet = Process32Next(hProcessSnap,&pe32);
  12.    printf("%s\n",&pe32.szExeFile);
  13. }
  14. return 0;
復(fù)制代碼
如果想輸出文件路徑,在其中加入提權(quán)代碼后再OpenProcess,,GetModuleFileNameEx即可,。

2.EnumProcesses 法
  1. //////////////////////////////////////////////////////////////////////////
  2. // EnumProcesses 法      #include <Psapi.h>   #pragma comment(lib,"Psapi.lib")
  3. //////////////////////////////////////////////////////////////////////////
  4. DWORD PID[1024];
  5. DWORD needed,NumProcess;
  6. EnumProcesses(PID,sizeof(PID),&needed);
  7. NumProcess = needed/sizeof(DWORD);
  8. char FilePatch[MAX_PATH];

  9. for (DWORD i=0;i<NumProcess;i++)
  10. {
  11.    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,PID[i]);
  12.    if (hProcess)
  13.    {
  14.     GetModuleFileNameEx(hProcess,NULL,FilePatch,sizeof(FilePatch));
  15.     printf("%s\n",FilePatch);
  16.    }
  17. }
  18. CloseHandle(hProcess);
  19. printf("一共%d個(gè)進(jìn)程\n",NumProcess);
  20. return 0;
復(fù)制代碼
3.WTSOpenServer 法
  1. //////////////////////////////////////////////////////////////////////////
  2. // WTSOpenServer 法   #include <Wtsapi32.h> #pragma comment(lib,"Wtsapi32.lib")   用nbtstat -an獲取本機(jī)NetBios名稱,并在命令行下輸入即可
  3. //////////////////////////////////////////////////////////////////////////
  4. char *szServerName = argv[1];
  5. PWTS_PROCESS_INFO wts;
  6. DWORD dwCount;
  7. HANDLE hWtsServer = WTSOpenServer(szServerName);
  8. if(!WTSEnumerateProcesses(hWtsServer,0,1,&wts,&dwCount))
  9.    return 0;
  10. for (DWORD i=0;i<dwCount;i++)
  11. {
  12.    printf("%s\n",wts[i].pProcessName); 
  13. }
  14. return 0;
復(fù)制代碼
4. ZwQuerySystemInformation 法
  1. //////////////////////////////////////////////////////////////////////////
  2. // ZwQuerySystemInformation 法 
  3. //////////////////////////////////////////////////////////////////////////

  4. /* 
  5. * Author: Leng_que 
  6. * Date: 2010年1月26日23:44:28 
  7. * E-mail: [email][email protected][/email] 
  8. * Description: 演示了如何通過(guò)ZwQuerySystemInformation這個(gè)函數(shù)獲取系統(tǒng)的相關(guān)信息 
  9. */

  10. #include <stdio.h>   
  11. #include <windows.h>   

  12. typedef LONG NTSTATUS;   

  13. #define STATUS_SUCCESS                  ((NTSTATUS)0x00000000L)   
  14. #define STATUS_UNSUCCESSFUL             ((NTSTATUS)0xC0000001L)   
  15. #define STATUS_NOT_IMPLEMENTED          ((NTSTATUS)0xC0000002L)   
  16. #define STATUS_INVALID_INFO_CLASS       ((NTSTATUS)0xC0000003L)   
  17. #define STATUS_INFO_LENGTH_MISMATCH     ((NTSTATUS)0xC0000004L)   

  18. typedef enum _SYSTEM_INFORMATION_CLASS   
  19. {   
  20.     SystemBasicInformation,                 // 0 Y N   
  21.     SystemProcessorInformation,             // 1 Y N   
  22.     SystemPerformanceInformation,           // 2 Y N   
  23.     SystemTimeOfDayInformation,             // 3 Y N   
  24.     SystemNotImplemented1,                  // 4 Y N   
  25.     SystemProcessesAndThreadsInformation,   // 5 Y N   
  26.     SystemCallCounts,                       // 6 Y N   
  27.     SystemConfigurationInformation,         // 7 Y N   
  28.     SystemProcessorTimes,                   // 8 Y N   
  29.     SystemGlobalFlag,                       // 9 Y Y   
  30.     SystemNotImplemented2,                  // 10 Y N   
  31.     SystemModuleInformation,                // 11 Y N   
  32.     SystemLockInformation,                  // 12 Y N   
  33.     SystemNotImplemented3,                  // 13 Y N   
  34.     SystemNotImplemented4,                  // 14 Y N   
  35.     SystemNotImplemented5,                  // 15 Y N   
  36.     SystemHandleInformation,                // 16 Y N   
  37.     SystemObjectInformation,                // 17 Y N   
  38.     SystemPagefileInformation,              // 18 Y N   
  39.     SystemInstructionEmulationCounts,       // 19 Y N   
  40.     SystemInvalidInfoClass1,                // 20   
  41.     SystemCacheInformation,                 // 21 Y Y   
  42.     SystemPoolTagInformation,               // 22 Y N   
  43.     SystemProcessorStatistics,              // 23 Y N   
  44.     SystemDpcInformation,                   // 24 Y Y   
  45.     SystemNotImplemented6,                  // 25 Y N   
  46.     SystemLoadImage,                        // 26 N Y   
  47.     SystemUnloadImage,                      // 27 N Y   
  48.     SystemTimeAdjustment,                   // 28 Y Y   
  49.     SystemNotImplemented7,                  // 29 Y N   
  50.     SystemNotImplemented8,                  // 30 Y N   
  51.     SystemNotImplemented9,                  // 31 Y N   
  52.     SystemCrashDumpInformation,             // 32 Y N   
  53.     SystemExceptionInformation,             // 33 Y N   
  54.     SystemCrashDumpStateInformation,        // 34 Y Y/N   
  55.     SystemKernelDebuggerInformation,        // 35 Y N   
  56.     SystemContextSwitchInformation,         // 36 Y N   
  57.     SystemRegistryQuotaInformation,         // 37 Y Y   
  58.     SystemLoadAndCallImage,                 // 38 N Y   
  59.     SystemPrioritySeparation,               // 39 N Y   
  60.     SystemNotImplemented10,                 // 40 Y N   
  61.     SystemNotImplemented11,                 // 41 Y N   
  62.     SystemInvalidInfoClass2,                // 42   
  63.     SystemInvalidInfoClass3,                // 43   
  64.     SystemTimeZoneInformation,              // 44 Y N   
  65.     SystemLookasideInformation,             // 45 Y N   
  66.     SystemSetTimeSlipEvent,                 // 46 N Y   
  67.     SystemCreateSession,                    // 47 N Y   
  68.     SystemDeleteSession,                    // 48 N Y   
  69.     SystemInvalidInfoClass4,                // 49   
  70.     SystemRangeStartInformation,            // 50 Y N   
  71.     SystemVerifierInformation,              // 51 Y Y   
  72.     SystemAddVerifier,                      // 52 N Y   
  73.     SystemSessionProcessesInformation       // 53 Y N   

  74. } SYSTEM_INFORMATION_CLASS;   

  75. typedef struct _LSA_UNICODE_STRING   
  76. {   
  77.     USHORT Length;   
  78.     USHORT MaximumLength;   
  79.     PWSTR Buffer;   
  80.        
  81. } LSA_UNICODE_STRING, *PLSA_UNICODE_STRING, UNICODE_STRING, *PUNICODE_STRING;   

  82. typedef struct _CLIENT_ID   
  83. {   
  84.     HANDLE UniqueProcess;   
  85.     HANDLE UniqueThread;   

  86. } CLIENT_ID;   

  87. typedef enum _THREAD_STATE   
  88. {   
  89.     StateInitialized,   
  90.     StateReady,   
  91.     StateRunning,   
  92.     StateStandby,   
  93.     StateTerminated,   
  94.     StateWait,   
  95.     StateTransition,   
  96.     StateUnknown   

  97. } THREAD_STATE;   

  98. typedef enum _KWAIT_REASON   
  99. {   
  100.     Executive,   
  101.     FreePage,   
  102.     PageIn,   
  103.     PoolAllocation,   
  104.     DelayExecution,   
  105.     Suspended,   
  106.     UserRequest,   
  107.     WrExecutive,   
  108.     WrFreePage,   
  109.     WrPageIn,   
  110.     WrPoolAllocation,   
  111.     WrDelayExecution,   
  112.     WrSuspended,   
  113.     WrUserRequest,   
  114.     WrEventPair,   
  115.     WrQueue,   
  116.     WrLpcReceive,   
  117.     WrLpcReply,   
  118.     WrVirtualMemory,   
  119.     WrPageOut,   
  120.     WrRendezvous,   
  121.     Spare2,   
  122.     Spare3,   
  123.     Spare4,   
  124.     Spare5,   
  125.     Spare6,   
  126.     WrKernel   

  127. } KWAIT_REASON;   

  128. typedef struct _IO_COUNTERS   
  129. {   
  130.     LARGE_INTEGER ReadOperationCount;   //I/O讀操作數(shù)目   
  131.     LARGE_INTEGER WriteOperationCount; //I/O寫(xiě)操作數(shù)目   
  132.     LARGE_INTEGER OtherOperationCount; //I/O其他操作數(shù)目   
  133.     LARGE_INTEGER ReadTransferCount;    //I/O讀數(shù)據(jù)數(shù)目   
  134.     LARGE_INTEGER WriteTransferCount;   //I/O寫(xiě)數(shù)據(jù)數(shù)目   
  135.     LARGE_INTEGER OtherTransferCount;   //I/O其他操作數(shù)據(jù)數(shù)目   

  136. } IO_COUNTERS, *PIO_COUNTERS;   

  137. typedef struct _VM_COUNTERS   
  138. {   
  139.     ULONG PeakVirtualSize;              //虛擬存儲(chǔ)峰值大小   
  140.     ULONG VirtualSize;                  //虛擬存儲(chǔ)大小   
  141.     ULONG PageFaultCount;               //頁(yè)故障數(shù)目   
  142.     ULONG PeakWorkingSetSize;           //工作集峰值大小   
  143.     ULONG WorkingSetSize;               //工作集大小   
  144.     ULONG QuotaPeakPagedPoolUsage;      //分頁(yè)池使用配額峰值   
  145.     ULONG QuotaPagedPoolUsage;          //分頁(yè)池使用配額   
  146.     ULONG QuotaPeakNonPagedPoolUsage;   //非分頁(yè)池使用配額峰值   
  147.     ULONG QuotaNonPagedPoolUsage;       //非分頁(yè)池使用配額   
  148.     ULONG PagefileUsage;                //頁(yè)文件使用情況   
  149.     ULONG PeakPagefileUsage;            //頁(yè)文件使用峰值   

  150. } VM_COUNTERS, *PVM_COUNTERS;   

  151. typedef LONG KPRIORITY;   

  152. typedef struct _SYSTEM_THREADS   
  153. {   
  154.     LARGE_INTEGER KernelTime;   
  155.     LARGE_INTEGER UserTime;   
  156.     LARGE_INTEGER CreateTime;   
  157.     ULONG WaitTime;   
  158.     PVOID StartAddress;   
  159.     CLIENT_ID ClientId;   
  160.     KPRIORITY Priority;   
  161.     KPRIORITY BasePriority;   
  162.     ULONG ContextSwitchCount;   
  163.     THREAD_STATE State;   
  164.     KWAIT_REASON WaitReason;   

  165. } SYSTEM_THREADS, *PSYSTEM_THREADS;   

  166. typedef struct _SYSTEM_PROCESSES   
  167. {   
  168.     ULONG NextEntryDelta;   
  169.     ULONG ThreadCount;   
  170.     ULONG Reserved1[6];   
  171.     LARGE_INTEGER CreateTime;   
  172.     LARGE_INTEGER UserTime;   
  173.     LARGE_INTEGER KernelTime;   
  174.     UNICODE_STRING ProcessName;   
  175.     KPRIORITY BasePriority;   
  176.     ULONG ProcessId;   
  177.     ULONG InheritedFromProcessId;   
  178.     ULONG HandleCount;   
  179.     ULONG Reserved2[2];   
  180.     VM_COUNTERS VmCounters;   
  181.     IO_COUNTERS IoCounters;   
  182.     SYSTEM_THREADS Threads[1];   

  183. } SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;   

  184. typedef struct _SYSTEM_BASIC_INFORMATION   
  185. {   
  186.     BYTE Reserved1[24];   
  187.     PVOID Reserved2[4];   
  188.     CCHAR NumberOfProcessors;   

  189. } SYSTEM_BASIC_INFORMATION;   

  190. typedef NTSTATUS (WINAPI *NTQUERYSYSTEMINFORMATION)(IN SYSTEM_INFORMATION_CLASS, IN OUT PVOID, IN ULONG, OUT PULONG OPTIONAL);   

  191. int main(void)   
  192. {   
  193.     HINSTANCE ntdll_dll = GetModuleHandle("ntdll.dll");   
  194.     if ( ntdll_dll!=NULL )   
  195.     {   
  196.         NTQUERYSYSTEMINFORMATION dwFunAddress = (NTQUERYSYSTEMINFORMATION)GetProcAddress(ntdll_dll, "ZwQuerySystemInformation");   
  197.         if ( dwFunAddress!=NULL )   
  198.         {   
  199.             //執(zhí)行 SystemBasicInformation   
  200.             SYSTEM_BASIC_INFORMATION sbi = {0};   
  201.             NTSTATUS status = dwFunAddress(SystemBasicInformation, (PVOID)&sbi, sizeof(sbi), NULL);   
  202.             if ( status == STATUS_SUCCESS )   
  203.             {   
  204.                 printf("處理器個(gè)數(shù):%d\r\n", sbi.NumberOfProcessors);   
  205.                 printf("\r\n");   
  206.             }   
  207.             else 
  208.             {   
  209.                 printf("\r\n SystemBasicInformation error");   
  210.             }   
  211.                
  212.             //執(zhí)行 SystemProcessesAndThreadsInformation   
  213.             PSYSTEM_PROCESSES pSp=NULL;   
  214.             ULONG retureSize=0;   
  215.                
  216.             status = dwFunAddress(SystemProcessesAndThreadsInformation, NULL, 0, &retureSize);   
  217.             if ( status == STATUS_INFO_LENGTH_MISMATCH )   
  218.             {   
  219.                 unsigned char *buf = new unsigned char[retureSize];   
  220.                 if ( buf!=NULL )   
  221.                 {   
  222.                     status = dwFunAddress(SystemProcessesAndThreadsInformation, (PVOID)buf, retureSize, NULL);   
  223.                     if ( status == STATUS_SUCCESS )   
  224.                     {   
  225.                         pSp = (PSYSTEM_PROCESSES)buf;   
  226.                            
  227.                         printf("===============所有進(jìn)程信息=============\r\n");   
  228.                         do {   
  229.                                
  230.                             printf("進(jìn)程ID:%d\r\n", pSp->ProcessId);   
  231.                                
  232.                             printf("進(jìn)程名:");   
  233.                             wprintf(L"%s\r\n", pSp->ProcessName.Buffer);   
  234.                                
  235.                             printf("線程數(shù):%d\r\n", pSp->ThreadCount);   
  236.                             printf("工作集大小:%dKB\r\n", pSp->VmCounters.WorkingSetSize/1024);   
  237.                             printf("\r\n\r\n");   
  238.                                
  239.                             pSp = (PSYSTEM_PROCESSES)( (unsigned long)pSp + pSp->NextEntryDelta );   
  240.                                
  241.                         } while ( pSp->NextEntryDelta != 0 );   
  242.                         printf("========================================\r\n");   
  243.                            
  244.                         delete[] buf;   
  245.                         buf = NULL;   
  246.                         pSp = NULL;   
  247.                     }   
  248.                     else if ( status == STATUS_UNSUCCESSFUL )   
  249.                     {   
  250.                         printf("\r\n STATUS_UNSUCCESSFUL");   
  251.                     }   
  252.                     else if ( status == STATUS_NOT_IMPLEMENTED )   
  253.                     {   
  254.                         printf("\r\n STATUS_NOT_IMPLEMENTED");   
  255.                     }   
  256.                     else if ( status == STATUS_INVALID_INFO_CLASS )   
  257.                     {   
  258.                         printf("\r\n STATUS_INVALID_INFO_CLASS");   
  259.                     }   
  260.                     else if ( status == STATUS_INFO_LENGTH_MISMATCH )   
  261.                     {   
  262.                         printf("\r\n STATUS_INFO_LENGTH_MISMATCH");   
  263.                     }   
  264.                 }   
  265.                 else 
  266.                 {   
  267.                     printf("\r\n new operation error!");   
  268.                 }   
  269.             }   
  270.         }   
  271.         else 
  272.         {   
  273.             printf("\r\n get ZwQuerySystemInformation address error!");   
  274.         }   
  275.            
  276.         FreeLibrary(ntdll_dll);   
  277.     }   
  278.        
  279.     system("pause > nul");   
  280.     return 0;   
  281. }
復(fù)制代碼

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多