亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? processinfo.cpp

?? Windows via C/C++, Fifth Edition圖書源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/******************************************************************************
Module:  ProcessInfo.cpp
Notices: Copyright (c) 2008 Jeffrey Richter & Christophe Nasarre
******************************************************************************/


#include "..\CommonFiles\CmnHdr.h"     /* See Appendix A. */
#include "..\CommonFiles\Toolhelp.h"
#include <windowsx.h>
#include <stdarg.h>
#include <stdio.h>
#include "Resource.h"

#include <winternl.h>   // for Windows internal declarations.
#include <aclapi.h>     // for ACL management.
#include <shlwapi.h>    // for StrFormatKBSize.
#include <shlobj.h>     // for IsUserAnAdmin.
#include <AclApi.h>     // for ACL/ACE functions.

#include <tchar.h>
#include <StrSafe.h> 


#pragma comment (lib,"shlwapi.lib")
#pragma comment (lib,"shell32.lib")



// static variables
TOKEN_ELEVATION_TYPE s_elevationType = TokenElevationTypeDefault;
BOOL                 s_bIsAdmin = FALSE;
const int			 s_cchAddress = sizeof(PVOID) * 2;


///////////////////////////////////////////////////////////////////////////////


// Add a string to an edit control
void AddText(HWND hwnd, PCTSTR pszFormat, ...) {

   va_list argList;
   va_start(argList, pszFormat);

   TCHAR sz[20 * 1024];
   Edit_GetText(hwnd, sz, _countof(sz));
   _vstprintf_s(_tcschr(sz, TEXT('\0')), _countof(sz) - _tcslen(sz), 
      pszFormat, argList);
   Edit_SetText(hwnd, sz);
   va_end(argList);
}


///////////////////////////////////////////////////////////////////////////////


BOOL GetProcessIntegrityLevel(HANDLE hProcess, PDWORD pIntegrityLevel, 
   PDWORD pPolicy, PDWORD pResourceIntegrityLevel, PDWORD pResourcePolicy) {
   
   HANDLE hToken = NULL;
   if (!OpenProcessToken(hProcess, TOKEN_READ, &hToken)) {
      return(FALSE);
   }

   BOOL bReturn = FALSE;
   
   // First, compute the size of the buffer to get the Integrity level
   DWORD dwNeededSize = 0;
   if (!GetTokenInformation(
      hToken, TokenIntegrityLevel, NULL, 0, &dwNeededSize)) {

      PTOKEN_MANDATORY_LABEL pTokenInfo = NULL;
      if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
         // Second, allocate a memory block with the the required size 
         pTokenInfo = (PTOKEN_MANDATORY_LABEL)LocalAlloc(0, dwNeededSize);
         if (pTokenInfo != NULL) {
            // And finally, ask for the integrity level
            if (GetTokenInformation(hToken, TokenIntegrityLevel, pTokenInfo, 
               dwNeededSize, &dwNeededSize)) {

               *pIntegrityLevel = 
                  *GetSidSubAuthority(
                     pTokenInfo->Label.Sid, 
                     (*GetSidSubAuthorityCount(pTokenInfo->Label.Sid)-1)
                     );
               bReturn = TRUE;
            }
          
            // Don't forget to free the memory
            LocalFree(pTokenInfo);
         }
      }
   }

   // Try to get the policy if the integrity level was available
   if (bReturn) {
      *pPolicy = TOKEN_MANDATORY_POLICY_OFF;
      dwNeededSize = sizeof(DWORD);
      GetTokenInformation(hToken, TokenMandatoryPolicy, pPolicy, 
         dwNeededSize, &dwNeededSize);
   }
   
   // Look for the resource policy
   *pResourceIntegrityLevel = 0; // 0 means none explicitely set
   *pResourcePolicy = 0;
   
   PACL pSACL = NULL;
   PSECURITY_DESCRIPTOR pSD = NULL;
   DWORD dwResult = ERROR_SUCCESS;
   
   // Look for the no-read-up/no-write-up policy in the SACL
   if (hToken != NULL) {
      dwResult = 
         GetSecurityInfo(
            hProcess, SE_KERNEL_OBJECT,
            LABEL_SECURITY_INFORMATION,
            NULL, NULL, NULL, 
            &pSACL, &pSD
          );
      if (dwResult == ERROR_SUCCESS) {
         if (pSACL != NULL) {
            SYSTEM_MANDATORY_LABEL_ACE* pACE = NULL;
            if ((pSACL->AceCount > 0) && (GetAce(pSACL, 0, (PVOID*)&pACE))) {
               if (pACE != NULL) {
                  SID* pSID = (SID*)(&pACE->SidStart);
                  *pResourceIntegrityLevel = pSID->SubAuthority[0];
                  *pResourcePolicy = pACE->Mask;
               }
            }
         }
      }
      
      // Cleanup memory allocated on our behalf
      if (pSD != NULL) LocalFree(pSD); 
   }


   // Don't forget to close the token handle.
   CloseHandle(hToken);

   return(bReturn);   
}

BOOL GetProcessIntegrityLevel(DWORD PID, PDWORD pIntegrityLevel, 
   PDWORD pPolicy, PDWORD pResourceIntegrityLevel, PDWORD pResourcePolicy) {
   
   // Sanity checks
   if ((PID <= 0) || (pIntegrityLevel == NULL))
      return(FALSE);

   // Check if we can get information for this process
   HANDLE hProcess = OpenProcess(
      READ_CONTROL | PROCESS_QUERY_INFORMATION, 
      FALSE, PID);

   if (hProcess == NULL)
      return(FALSE);

   BOOL bReturn = GetProcessIntegrityLevel(hProcess, pIntegrityLevel, 
      pPolicy, pResourceIntegrityLevel, pResourcePolicy);

   // Don't forget to release the process handle
   CloseHandle(hProcess);

   return(bReturn);
}



VOID Dlg_PopulateProcessList(HWND hwnd) {

   HWND hwndList = GetDlgItem(hwnd, IDC_PROCESSMODULELIST);
   SetWindowRedraw(hwndList, FALSE);
   ComboBox_ResetContent(hwndList);

   CToolhelp thProcesses(TH32CS_SNAPPROCESS);
   PROCESSENTRY32 pe = { sizeof(pe) };
   BOOL fOk = thProcesses.ProcessFirst(&pe);
   for (; fOk; fOk = thProcesses.ProcessNext(&pe)) {
      TCHAR sz[1024];

      // Place the process name (without its path) & ID in the list
      PCTSTR pszExeFile = _tcsrchr(pe.szExeFile, TEXT('\\'));
      if (pszExeFile == NULL) {
         pszExeFile = pe.szExeFile;
      } else {
         pszExeFile++; // Skip over the slash
      }

      // Append the code/resource integrity level and policy
      DWORD dwCodeIntegrityLevel = 0;
      DWORD dwCodePolicy = TOKEN_MANDATORY_POLICY_OFF;
      DWORD dwResourcePolicy = 0;
      DWORD dwResourceIntegrityLevel = 0;
      TCHAR szCodeDetails[256];
      szCodeDetails[0] = TEXT('\0');
      TCHAR szResourceDetails[256];
      szResourceDetails[0] = TEXT('\0');
      if (GetProcessIntegrityLevel(pe.th32ProcessID, &dwCodeIntegrityLevel, 
         &dwCodePolicy, &dwResourceIntegrityLevel, &dwResourcePolicy)) {
         switch (dwCodeIntegrityLevel) {
            case SECURITY_MANDATORY_LOW_RID:
               _tcscpy_s(szCodeDetails, _countof(szCodeDetails), 
                  TEXT("- Low "));
               break;

            case SECURITY_MANDATORY_MEDIUM_RID:
               _tcscpy_s(szCodeDetails, _countof(szCodeDetails), 
                  TEXT("- Medium "));
               break;

            case SECURITY_MANDATORY_HIGH_RID:
               _tcscpy_s(szCodeDetails, _countof(szCodeDetails), 
                  TEXT("- High "));
               break;

            case SECURITY_MANDATORY_SYSTEM_RID:
               _tcscpy_s(szCodeDetails, _countof(szCodeDetails), 
                  TEXT("- System "));
               break;

            default:
               _tcscpy_s(szCodeDetails, _countof(szCodeDetails), 
                  TEXT("- ??? "));
         }

         if (dwCodePolicy == TOKEN_MANDATORY_POLICY_OFF) { // = 0
            _tcscat_s(szCodeDetails, 
               _countof(szCodeDetails), TEXT(" + no policy"));
         } else {
            if ((dwCodePolicy & TOKEN_MANDATORY_POLICY_VALID_MASK) == 0) {
               _tcscat_s(szCodeDetails, _countof(szCodeDetails), 
                  TEXT(" + ???"));
            } else {
               if ((dwCodePolicy & TOKEN_MANDATORY_POLICY_NO_WRITE_UP)
                  == TOKEN_MANDATORY_POLICY_NO_WRITE_UP) { 
                  _tcscat_s(szCodeDetails, _countof(szCodeDetails), 
                     TEXT(" + no write-up"));
               }

               if ((dwCodePolicy & TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN)
                  == TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) { 
                  _tcscat_s(szCodeDetails, _countof(szCodeDetails), 
                     TEXT(" + new process min"));
               }
            }
         }

         switch (dwResourceIntegrityLevel) {
            case SECURITY_MANDATORY_LOW_RID:
               _tcscpy_s(szResourceDetails, 
                  _countof(szResourceDetails), TEXT("Low"));
               break;

            case SECURITY_MANDATORY_MEDIUM_RID:
               _tcscpy_s(szResourceDetails, 
                  _countof(szResourceDetails), TEXT("Medium"));
               break;

            case SECURITY_MANDATORY_HIGH_RID:
               _tcscpy_s(szResourceDetails, 
                  _countof(szResourceDetails), TEXT("High"));
               break;

            case SECURITY_MANDATORY_SYSTEM_RID:
               _tcscpy_s(szResourceDetails, 
                  _countof(szResourceDetails), TEXT("System"));
               break;

            case 0:
               _tcscpy_s(szResourceDetails, 
                  _countof(szResourceDetails), TEXT("Not set"));
               break;

            default:
               _tcscpy_s(szResourceDetails, 
                  _countof(szResourceDetails), TEXT("???"));
          }


         if (dwResourcePolicy == 0) { // = 0
            _tcscat_s(szResourceDetails, 
               _countof(szResourceDetails), TEXT(" + 0 policy"));
         } else {
            if ((dwResourcePolicy & TOKEN_MANDATORY_POLICY_VALID_MASK) == 0) {
               _tcscat_s(szResourceDetails, 
                  _countof(szResourceDetails), TEXT(" + ???"));
            } else {
               if ((dwResourcePolicy & SYSTEM_MANDATORY_LABEL_NO_WRITE_UP)
                  == SYSTEM_MANDATORY_LABEL_NO_WRITE_UP) { 
                  _tcscat_s(szResourceDetails, 
                     _countof(szResourceDetails), 
                     TEXT(" + no write-up"));
               }

               if ((dwResourcePolicy & SYSTEM_MANDATORY_LABEL_NO_READ_UP)
                  == SYSTEM_MANDATORY_LABEL_NO_READ_UP) { 
                  _tcscat_s(szResourceDetails, 
                     _countof(szResourceDetails), 
                     TEXT(" + no read-up"));
               }
               if ((dwResourcePolicy & SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP)
                  == SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP) { 
                  _tcscat_s(szResourceDetails, 
                     _countof(szResourceDetails), 
                     TEXT(" + no execute-up"));
               }
            }
         }
      }

      StringCchPrintf(sz, _countof(sz), TEXT("%s     (0x%08X)  %s    [%s]"), 
         pszExeFile, pe.th32ProcessID, szCodeDetails, szResourceDetails);
      int n = ComboBox_AddString(hwndList, sz);

      // Associate the process ID with the added item
      ComboBox_SetItemData(hwndList, n, pe.th32ProcessID);
   }

   ComboBox_SetCurSel(hwndList, 0);  // Select the first entry

   // Simulate the user selecting this first item so that the
   // results pane shows something interesting
   FORWARD_WM_COMMAND(hwnd, IDC_PROCESSMODULELIST, 
      hwndList, CBN_SELCHANGE, SendMessage);

   SetWindowRedraw(hwndList, TRUE);
   InvalidateRect(hwndList, NULL, FALSE);
}


///////////////////////////////////////////////////////////////////////////////


VOID Dlg_PopulateModuleList(HWND hwnd) {

   HWND hwndModuleHelp = GetDlgItem(hwnd, IDC_MODULEHELP);
   ListBox_ResetContent(hwndModuleHelp);

   CToolhelp thProcesses(TH32CS_SNAPPROCESS);
   PROCESSENTRY32 pe = { sizeof(pe) };
   BOOL fOk = thProcesses.ProcessFirst(&pe);
   for (; fOk; fOk = thProcesses.ProcessNext(&pe)) {

      CToolhelp thModules(TH32CS_SNAPMODULE, pe.th32ProcessID);
      MODULEENTRY32 me = { sizeof(me) };
      BOOL fOk = thModules.ModuleFirst(&me);
      for (; fOk; fOk = thModules.ModuleNext(&me)) {
        int n = ListBox_FindStringExact(hwndModuleHelp, -1, me.szExePath);
         if (n == LB_ERR) {
            // This module hasn't been added before
            ListBox_AddString(hwndModuleHelp, me.szExePath);
         }
      }
   }

   HWND hwndList = GetDlgItem(hwnd, IDC_PROCESSMODULELIST);
   SetWindowRedraw(hwndList, FALSE);
   ComboBox_ResetContent(hwndList);
   int nNumModules = ListBox_GetCount(hwndModuleHelp);
   for (int i = 0; i < nNumModules; i++) {
      TCHAR sz[1024];
      ListBox_GetText(hwndModuleHelp, i, sz);
      // Place module name (without its path) in the list
      int nIndex = ComboBox_AddString(hwndList, _tcsrchr(sz, TEXT('\\')) + 1);
      // Associate the index of the full path with the added item
      ComboBox_SetItemData(hwndList, nIndex, i);
   }

   ComboBox_SetCurSel(hwndList, 0);  // Select the first entry

   // Simulate the user selecting this first item so that the
   // results pane shows something interesting
   FORWARD_WM_COMMAND(hwnd, IDC_PROCESSMODULELIST, 
      hwndList, CBN_SELCHANGE, SendMessage);

   SetWindowRedraw(hwndList, TRUE);
   InvalidateRect(hwndList, NULL, FALSE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品亚洲人成人网| 精品国产亚洲一区二区三区在线观看| 日本成人在线不卡视频| 亚洲免费观看高清完整版在线观看熊| 国产日本一区二区| 欧美韩国日本不卡| 欧美精彩视频一区二区三区| 国产亚洲欧美日韩在线一区| www欧美成人18+| 久久精品亚洲一区二区三区浴池 | 成人性视频网站| 国产精品一级二级三级| 成人综合在线网站| 91网站在线播放| 欧美系列亚洲系列| 精品视频在线免费观看| 7777精品伊人久久久大香线蕉最新版 | 亚洲综合免费观看高清完整版 | 国产激情一区二区三区四区 | 日韩美女主播在线视频一区二区三区 | 99久久精品国产麻豆演员表| 成人91在线观看| 在线免费av一区| 欧美蜜桃一区二区三区| 欧美r级在线观看| 中文字幕在线不卡一区二区三区| 亚洲免费观看高清在线观看| 天堂成人国产精品一区| 国产精品一色哟哟哟| 91一区二区在线观看| 91精品国产全国免费观看| 精品国产乱码久久久久久久久 | 中文字幕在线免费不卡| 亚洲午夜私人影院| 韩国理伦片一区二区三区在线播放| 国产精品亚洲午夜一区二区三区 | 日韩电影免费在线看| 国产一区二区三区久久久| 91色视频在线| 欧美变态凌虐bdsm| 亚洲欧美韩国综合色| 麻豆国产精品一区二区三区| 成人免费毛片a| 日韩视频不卡中文| 亚洲欧美日韩国产一区二区三区| 免费人成在线不卡| 91首页免费视频| 久久九九全国免费| 婷婷久久综合九色综合伊人色| 国产精品一级在线| 日韩欧美一二三| 亚洲国产va精品久久久不卡综合| 激情六月婷婷综合| 欧美高清一级片在线| 中文字幕在线一区免费| 久草中文综合在线| 欧美一区三区二区| 亚洲一区二区欧美| 91亚洲男人天堂| 欧美激情一区二区| 国产一区欧美一区| 制服.丝袜.亚洲.另类.中文| 国产精品国产三级国产| 国产成人高清视频| 精品免费国产二区三区| 欧美a一区二区| 欧美日韩精品久久久| 亚洲精品美腿丝袜| 91麻豆自制传媒国产之光| 国产女主播一区| 成人性视频免费网站| 国产三级一区二区| 国产不卡在线播放| 国产午夜精品理论片a级大结局 | 136国产福利精品导航| 国产99久久久久久免费看农村| 精品国产三级a在线观看| 日韩福利电影在线| 日韩一区二区三区在线| 免费观看一级欧美片| 日韩一级二级三级精品视频| 天天综合天天做天天综合| 欧美日韩精品综合在线| 亚洲成av人片在线观看| 欧美一区二区性放荡片| 美女爽到高潮91| 欧美精品一区二区三区视频| 激情文学综合网| 欧美韩日一区二区三区| av男人天堂一区| 亚洲综合999| 777久久久精品| 福利电影一区二区三区| 国产精品久久久久三级| 日本乱人伦aⅴ精品| 性做久久久久久久免费看| 91精品国产欧美一区二区成人| 蜜桃av一区二区三区| 久久九九国产精品| 99久精品国产| 天堂久久一区二区三区| 国产日本欧洲亚洲| 欧美唯美清纯偷拍| 久久狠狠亚洲综合| 中文字幕在线不卡一区| 欧美老年两性高潮| 韩国毛片一区二区三区| 亚洲精品精品亚洲| 精品美女在线播放| 欧美自拍丝袜亚洲| 国产一区二区三区高清播放| 亚洲欧洲综合另类在线| 日韩精品一区在线| 在线亚洲一区观看| 国产精品一区二区在线播放| 一区二区三区不卡视频在线观看| 日韩一区二区三区免费看| eeuss鲁片一区二区三区在线看| 午夜精品影院在线观看| 日本一区二区高清| 欧美一区二区三区四区高清| av高清久久久| 国产99久久久国产精品潘金 | 成人美女视频在线看| 亚洲va欧美va国产va天堂影院| 久久午夜国产精品| 51久久夜色精品国产麻豆| 成人黄动漫网站免费app| 久久电影国产免费久久电影| 一区二区欧美在线观看| 国产精品免费免费| 久久久三级国产网站| 欧美精品少妇一区二区三区| 北条麻妃国产九九精品视频| 精东粉嫩av免费一区二区三区| 亚洲国产精品视频| 亚洲欧美日韩综合aⅴ视频| 中文字幕第一区第二区| 久久综合99re88久久爱| 日韩一区二区三区电影在线观看| 色悠悠久久综合| 97久久精品人人做人人爽50路| 国内久久精品视频| 美女脱光内衣内裤视频久久影院| 亚洲成人av资源| 图片区小说区国产精品视频| 一区二区三区四区激情| 亚洲乱码国产乱码精品精的特点| 国产精品欧美久久久久无广告| 精品999在线播放| 日韩精品一区二区三区在线| 欧美精品久久99| 制服丝袜激情欧洲亚洲| 日韩一区二区三区视频在线观看| 欧美日韩视频不卡| 欧美一区二区啪啪| 日韩久久免费av| 国产亚洲欧洲一区高清在线观看| 国产午夜久久久久| 国产精品高潮呻吟| 亚洲欧美日本在线| 亚洲成人av福利| 精品夜夜嗨av一区二区三区| 国内国产精品久久| 国产电影一区在线| 99久久精品国产导航| 色视频成人在线观看免| 欧美午夜精品久久久| 91精品国产手机| 国产清纯在线一区二区www| 亚洲视频在线一区二区| 一片黄亚洲嫩模| 日本中文在线一区| 国产激情一区二区三区| 91麻豆免费视频| 91精品国产综合久久福利软件 | 成人av资源下载| 在线观看不卡一区| 3d动漫精品啪啪1区2区免费| www精品美女久久久tv| 亚洲欧美另类小说| 日韩精品视频网| 处破女av一区二区| 欧美精品精品一区| 国产精品视频在线看| 亚洲自拍偷拍网站| 国产精品综合二区| 欧美日韩亚洲丝袜制服| 2020国产精品自拍| 亚洲宅男天堂在线观看无病毒| 美女视频黄 久久| 97se亚洲国产综合在线| 日韩视频在线观看一区二区| 欧美国产精品v| 免费成人深夜小野草| 色婷婷综合在线| 久久精品日韩一区二区三区| 亚洲国产欧美在线人成| 成人自拍视频在线| 欧美成va人片在线观看|