zoukankan      html  css  js  c++  java
  • 服务管理,Dll查看

    //枚举系统进程
    VOID CManageProcessDlg::ShowProcess()
    {
        
         m_ListProcess.DeleteAllItems();
         HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
         //...

         PROCESSENTRY32 Pe32 = {0};
         Pe32.dwSize = sizeof(PROCESSENTRY32);
         int bRet = Process32First(hSnap,&Pe32);
         //...
         CString strTemp;
         DWORD dwIndex = 0;
         while(bRet)
         {
              //...
              bRet = Process32Next(hSnap,&Pe32);
              strTemp.Format("%d",Pe32.th32ProcessID);
              m_ListProcess.InsertItem(dwIndex,strTemp);
              m_ListProcess.SetItemText(dwIndex,1,Pe32.szExeFile);
              dwIndex ++;
         }

    }

    //列表控件的初始化
    void CManageProcessDlg::InitList()
    {
         m_ListProcess.SetExtendedStyle(m_ListProcess.GetExtendedStyle() |
              LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);

         m_ListProcess.InsertColumn(0,_T("NO"));
         m_ListProcess.InsertColumn(1,_T("进程名"));

         m_ListProcess.SetColumnWidth(0,LVSCW_AUTOSIZE_USEHEADER);
         m_ListProcess.SetColumnWidth(1,LVSCW_AUTOSIZE_USEHEADER);

         m_ListModule.SetExtendedStyle(m_ListModule.GetExtendedStyle() |
         LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);

         m_ListModule.InsertColumn(0,_T("NO"));
         m_ListModule.InsertColumn(1,_T("DLL名"));
         m_ListModule.InsertColumn(2,_T("DLL路径"));

         m_ListModule.SetColumnWidth(0,LVSCW_AUTOSIZE_USEHEADER);
         m_ListModule.SetColumnWidth(1,LVSCW_AUTOSIZE_USEHEADER);
         m_ListModule.SetColumnWidth(2,LVSCW_AUTOSIZE_USEHEADER);

    }

    void CManageProcessDlg::ShowModule()
    {
         DWORD  error;
         m_ListModule.DeleteAllItems();
        int nPid = GetSelectPid();
         MODULEENTRY32 Me32 = {0};
         Me32.dwSize = sizeof(MODULEENTRY32);
         HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,nPid);
         //...
         error = GetLastError();

         int bRet = Module32First(hSnap,&Me32);
        
         error = GetLastError();

         CString strTemp;
         DWORD dwIndex = 0;
         while( bRet)
         {
              //...
              bRet = Module32Next(hSnap,&Me32);
              strTemp.Format("%d",Me32.th32ProcessID);
              m_ListModule.InsertItem(dwIndex,strTemp);
              m_ListModule.SetItemText(dwIndex,1,Me32.szModule);
              m_ListModule.SetItemText(dwIndex,2,Me32.szExePath);
              dwIndex ++;
              //MessageBox(Me32.szExePath);
         }
    }

    int CManageProcessDlg::GetSelectPid()
    {
         POSITION pos = m_ListProcess.GetFirstSelectedItemPosition();
         int nSelect = -1;

         while( pos )
         {
              nSelect = m_ListProcess.GetNextSelectedItem(pos);
         }

         if(-1 == nSelect)
         {
              MessageBox("请选择要操作的项");
              return 0;
         }

         //获取选中服务的服务名
         char szServiceName[MAXBYTE] = {0};
         m_ListProcess.GetItemText(nSelect,0,szServiceName,MAXBYTE);    
         int a = atoi(szServiceName);
         return a;
    }
    //查看DLL
    void CManageProcessDlg::OnBtnDll()
    {
         // TODO: Add your control notification handler code here
         DebugPrivilege();
         ShowModule();
    }

    //提升权限
    void CManageProcessDlg::DebugPrivilege()
    {
         HANDLE hToken = NULL;
         //打开当前进程的访问令牌
         int hRet = OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hToken);

         if( hRet)
         {
              TOKEN_PRIVILEGES tp;
              tp.PrivilegeCount = 1;
              //取得描述权限的LUID
              LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid);
              tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
              //调整访问令牌的权限
              AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);

              CloseHandle(hToken);
         }
    }
  • 相关阅读:
    MySQL执行计划extra中的using index 和 using where using index 的区别
    Python + Apache Kylin 让数据分析更加简单!
    性能测试解读:Kyligence vs Spark SQL
    greenplum 表在各个节点数据的分布情况
    postgresql drop表后空间不释放
    PostgreSQL 查看表、索引等创建时间
    postgresql Kill掉正在执行的SQL语句
    linux ps命令查看最消耗CPU、内存的进程
    Linux shell
    TPC-H 下载参考
  • 原文地址:https://www.cnblogs.com/mynona/p/3162640.html
Copyright © 2011-2022 走看看