亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美色图在线观看| 午夜精品国产更新| 粉嫩蜜臀av国产精品网站| 日韩欧美自拍偷拍| 极品少妇xxxx精品少妇| 久久午夜电影网| 成人av在线资源| 亚洲精品国产品国语在线app| 一本色道久久综合狠狠躁的推荐| 亚洲日本在线a| 欧美图片一区二区三区| 久久66热re国产| 国产三级精品三级在线专区| 99国产精品久久久久| 亚洲国产日韩a在线播放| 5月丁香婷婷综合| 国产精品一区二区久久精品爱涩| 国产三级欧美三级日产三级99 | 成人av电影在线| 亚洲伦理在线精品| 欧美一级欧美一级在线播放| 国产精品69毛片高清亚洲| 亚洲女与黑人做爰| 日韩视频在线你懂得| 成人免费观看男女羞羞视频| 亚洲一区免费观看| 久久嫩草精品久久久精品一| 色综合色综合色综合| 欧美96一区二区免费视频| 国产精品视频一二三| 欧美日韩一区二区三区不卡| 国产乱码精品一区二区三区忘忧草 | 色噜噜夜夜夜综合网| 蜜桃视频一区二区| 亚洲另类在线制服丝袜| 精品国偷自产国产一区| 色94色欧美sute亚洲线路一久| 理论电影国产精品| 亚洲日本va在线观看| 精品国产伦理网| 欧美性大战久久| 不卡的电影网站| 精品一区二区三区在线播放| 一区二区三国产精华液| 国产三级一区二区三区| 欧美一区二区在线免费观看| 成人h动漫精品| 久久激情五月婷婷| 亚洲高清三级视频| 1000部国产精品成人观看| 精品国内二区三区| 欧美一区二区久久| 337p亚洲精品色噜噜| 94色蜜桃网一区二区三区| 国产精品亚洲成人| 久久99精品视频| 天天亚洲美女在线视频| 亚洲精品久久久蜜桃| 最新高清无码专区| 国产精品毛片大码女人| 久久久久久久久蜜桃| 精品少妇一区二区三区| 91精品国产色综合久久不卡电影| 欧美日韩一区二区在线观看视频| 白白色 亚洲乱淫| 国产91清纯白嫩初高中在线观看| 激情文学综合网| 久久国产精品色婷婷| 免费高清不卡av| 日本大胆欧美人术艺术动态| 亚洲永久免费av| 亚洲国产毛片aaaaa无费看| 亚洲最大的成人av| 樱桃视频在线观看一区| 亚洲猫色日本管| 亚洲精品免费视频| 一区二区三区成人| 亚洲第一狼人社区| 五月天精品一区二区三区| 亚洲超碰97人人做人人爱| 日韩成人一级大片| 青青草国产成人99久久| 美女任你摸久久| 韩国成人福利片在线播放| 国产在线播放一区| 国产白丝网站精品污在线入口 | www.亚洲激情.com| 91污在线观看| 欧美性三三影院| 欧美一区二区三区免费在线看| 日韩你懂的在线播放| 久久久一区二区三区| 欧美激情中文不卡| 亚洲视频一区二区在线观看| 一区二区三区四区中文字幕| 亚洲高清不卡在线| 麻豆一区二区99久久久久| 国产酒店精品激情| jlzzjlzz亚洲日本少妇| 欧美丝袜丝交足nylons图片| 69成人精品免费视频| 国产亚洲一区二区三区四区 | 日韩国产欧美在线播放| 久久99国产精品免费网站| 风流少妇一区二区| 91国产视频在线观看| 日韩午夜小视频| 国产精品久久久久久久久搜平片| 一区二区三区高清不卡| 久久se这里有精品| 99视频一区二区三区| 在线成人午夜影院| 久久免费偷拍视频| 一区二区三区高清不卡| 久久99久久久久| 成人丝袜视频网| 欧美精品久久99久久在免费线 | 国产精品1区2区3区| 色偷偷88欧美精品久久久| 日韩一级免费观看| 亚洲欧美在线视频观看| 日韩av不卡在线观看| a美女胸又www黄视频久久| 日韩视频一区在线观看| 亚洲女人小视频在线观看| 久久不见久久见中文字幕免费| 色诱视频网站一区| 久久久久99精品国产片| 首页综合国产亚洲丝袜| 99国产精品久| 久久久精品tv| 青青草一区二区三区| 在线免费观看不卡av| 久久精品一区二区三区不卡| 亚洲国产精品视频| 成人国产在线观看| 精品国产一区二区三区久久久蜜月 | 久久精品一区八戒影视| 日韩国产精品久久久| 91视视频在线观看入口直接观看www| 日韩午夜在线观看视频| 亚洲一区二区三区视频在线播放| 国产精品影视在线| 制服丝袜亚洲网站| 亚洲一区在线视频| 不卡的av在线播放| 欧美激情一区二区| 国产乱色国产精品免费视频| 欧美一二三在线| 日韩高清电影一区| 欧美日韩一区二区三区视频| 亚洲欧美日韩成人高清在线一区| 国产精品伊人色| 久久久另类综合| 国模一区二区三区白浆| 欧美xfplay| 麻豆视频一区二区| 91精品国产综合久久香蕉麻豆| 亚洲图片欧美综合| 欧美三片在线视频观看| 亚洲一线二线三线久久久| 91久久精品国产91性色tv| 亚洲色图.com| 91免费看视频| 一区二区欧美在线观看| 91黄色免费网站| 亚洲国产欧美日韩另类综合| 欧美丝袜自拍制服另类| 亚洲午夜电影在线观看| 欧美肥胖老妇做爰| 日本成人中文字幕| 久久综合色之久久综合| 国产一区二区三区四区在线观看 | 在线观看视频一区| 亚洲与欧洲av电影| 91精品中文字幕一区二区三区| 日本大胆欧美人术艺术动态| 欧美本精品男人aⅴ天堂| 国产一区二区三区在线观看精品 | 日韩一级欧美一级| 国产一区视频网站| 国产偷国产偷亚洲高清人白洁| 成人一级视频在线观看| 国产精品毛片无遮挡高清| 一本一本大道香蕉久在线精品| 亚洲香肠在线观看| 日韩欧美资源站| 国产精品小仙女| 亚洲激情图片一区| 91麻豆精品国产91久久久资源速度| 日本不卡视频在线观看| 欧美mv日韩mv| av动漫一区二区| 亚洲福利国产精品| 精品对白一区国产伦| 99久久免费精品高清特色大片| 亚洲一区二区三区三| 亚洲精品在线电影| 91免费看片在线观看| 免费在线观看视频一区|