css

// KillProcess.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include "tlhelp32.h"
#include <WinBase.h>
#pragma comment(lib,"Advapi32.lib")
#include "lm.h"
#include <WtsApi32.h>
#pragma comment(lib,"WtsApi32.lib")

BOOL SetPrivilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege)
{
    TOKEN_PRIVILEGES tp;
    LUID luid;

    if (!LookupPrivilegeValue(NULL, lpszPrivilege, &luid))
    {
        printf("\nLookupPrivilegeValue error:%d", GetLastError());
        return FALSE;
    }
    tp.PrivilegeCount = 1;
    tp.Privileges[0].Luid = luid;
    if (bEnablePrivilege)
        tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    else
        tp.Privileges[0].Attributes = 0;
    AdjustTokenPrivileges(
        hToken,
        FALSE,
        &tp,
        sizeof(TOKEN_PRIVILEGES),
        (PTOKEN_PRIVILEGES)NULL,
        (PDWORD)NULL);
    int a = GetLastError();
    if (GetLastError() != ERROR_SUCCESS)
    {
        printf("AdjustTokenPrivileges failed: %u\n", GetLastError());
        return FALSE;
    }
    return TRUE;
}


BOOL CALLBACK EnablePrivilege(LPCTSTR lpszPrivilegeName, BOOL bEnable)
{
    HANDLE hToken;
    TOKEN_PRIVILEGES tp;
    LUID luid;

    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES |
        TOKEN_QUERY | TOKEN_READ, &hToken))
        return FALSE;
    if (!LookupPrivilegeValue(NULL, lpszPrivilegeName, &luid))
        return TRUE;

    tp.PrivilegeCount = 1;
    tp.Privileges[0].Luid = luid;
    tp.Privileges[0].Attributes = (bEnable) ? SE_PRIVILEGE_ENABLED : 0;

    AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL);

    CloseHandle(hToken);

    return (GetLastError() == ERROR_SUCCESS);
}

 

 

 

int _tmain(int argc, _TCHAR* argv[])
{
    
    //HANDLE hProcessSnap = NULL;
    //PROCESSENTRY32 pe32 = { 0 };
    //HANDLE hProcess = NULL, hProcessToken = NULL;
    //BOOL IsKilled = FALSE, bRet = FALSE;

    //hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    //if (hProcessSnap == (HANDLE)-1)
    //{
    //    printf("\nCreateToolhelp32Snapshot() failed:%d", GetLastError());
    //    //Sleep(1000000);
    //    return -1;
    //}
    //pe32.dwSize = sizeof(PROCESSENTRY32);
    printf("\nProcessName  ProcessID");
    //if (Process32First(hProcessSnap, &pe32))
    //{
    //    //char a[5];
    //    HANDLE hProcess;
    //    do
    //    {
    //        //_itoa_s(pe32.th32ProcessID, a, 10);
    //        //printf("\n%-20s%d", pe32.szExeFile, pe32.th32ProcessID);

    //        if (wcsstr(pe32.szExeFile, _T("SshCloudMonitor.exe")) || wcsstr(pe32.szExeFile, _T("SshRegister.exe")) )
    //        {
    //            ResumeThread;
    //            if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hProcessToken))
    //            {
    //                printf("\nOpen Current Process Token failed:%d", GetLastError());
    //                //Sleep(1000000);
    //                return -1;
    //            }
    //            //printf("\nOpen Current Process Token ok!");
    //            if (!SetPrivilege(hProcessToken, SE_DEBUG_NAME, TRUE))
    //            {
    //                //Sleep(1000000);
    //                return -1;
    //            }
    //            printf("\nSetPrivilege ok!");

    //            //killps(pe32.th32ProcessID);
    //            if ((hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID)) == NULL)
    //            {
    //                printf("\nOpen Process %d failed:%d", pe32.th32ProcessID, GetLastError());
    //                Sleep(1000000);
    //                return -1;
    //            }
    //            //printf("\nOpen Process %d ok!",id);
    //            if (!TerminateProcess(hProcess, 1))
    //            {
    //                printf("\nTerminateProcess failed:%d", GetLastError());
    //                //Sleep(1000000);
    //                return -1;
    //            }
    //        }  

    //    } while (Process32Next(hProcessSnap, &pe32));
    //}
    //else
    //{
    //    printf("\nProcess32Firstt() failed:%d", GetLastError());
    //    //Sleep(1000000);
    //    return -1;
    //}
    //CloseHandle(hProcessSnap);
    Sleep(1000000);
    //return 0;


    /*HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (INVALID_HANDLE_VALUE == hSnapshot) {
        return NULL;
    }
    
    PROCESSENTRY32 pe = { sizeof(pe) };

    for (BOOL ret = Process32First(hSnapshot, &pe); ret; ret = Process32Next(hSnapshot, &pe))
    {
        if (wcscmp(pe.szExeFile, _T("SshCloudMonitor.exe")) == 0)
        {
            printf("again", GetLastError());
            system("pause");
            CloseHandle(hSnapshot);
            return pe.th32ProcessID;
        }
    }
    CloseHandle(hSnapshot);
    return 0;*/

    
        
    
    //HANDLE hProcessSnap = NULL;
    //PROCESSENTRY32 pe32 = { 0 };
    //HANDLE hProcess = NULL, hProcessToken = NULL;
    //BOOL IsKilled = FALSE, bRet = FALSE;

    //hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    //if (hProcessSnap == (HANDLE)-1)
    //{
    //    printf("\nCreateToolhelp32Snapshot() failed:%d", GetLastError());
    //    //Sleep(1000000);
    //    return -1;
    //}
    //pe32.dwSize = sizeof(PROCESSENTRY32);
    printf("\nProcessName  ProcessID");
    //if (Process32First(hProcessSnap, &pe32))
    //{
    //    //char a[5];
    //    HANDLE hProcess;
    //    do
    //    {
    //        
    //            const int nBufSize = UNLEN + 1;
    //            TCHAR chBuf[nBufSize];
    //            DWORD dwRet = nBufSize;
    //            
    //            if (GetUserName(chBuf, &dwRet))
    //            {
    //            
    //                
    //                
    //                
    //            }
    //        

    //    } while (Process32Next(hProcessSnap, &pe32));
    //}
    //else
    //{
    //    printf("\nProcess32Firstt() failed:%d", GetLastError());
    //    //Sleep(1000000);
    //    return -1;
    //}
    //CloseHandle(hProcessSnap);
    Sleep(1000000);
    //return 0;
    


    SID_NAME_USE sUse;
    WTS_PROCESS_INFO *pProInfo, *pTemp;
    DWORD dwRes;
    DWORD dwSize = MAX_PATH;
    WCHAR wzUserName[MAX_PATH];

    WCHAR wzDomainName[MAX_PATH];

    if (WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE, 0, 1, &pProInfo, &dwRes))
    {
        pTemp = pProInfo;
        for (DWORD i = 0; i < dwRes; i++)
        {
            //if (pTemp->ProcessId == dwProcess)  //可以获取特定进程
            {
                if (LookupAccountSid(NULL, pTemp->pUserSid, wzUserName, &dwSize, wzDomainName, &dwSize, &sUse))
                {
                    wprintf(_T("%d %d %s %s %s\r\n"), i, pTemp->ProcessId, pTemp->pProcessName, wzUserName, wzDomainName);
                    system("pause");
                }
            }
            pTemp++;
        }
        WTSFreeMemory(pProInfo);
    }

 

 

    


    /*HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (INVALID_HANDLE_VALUE == hSnapshot) {
    return NULL;
    }

    PROCESSENTRY32 pe = { sizeof(pe) };

    for (BOOL ret = Process32First(hSnapshot, &pe); ret; ret = Process32Next(hSnapshot, &pe))
    {
    if (wcscmp(pe.szExeFile, _T("SshCloudMonitor.exe")) == 0)
    {
    printf("again", GetLastError());
    system("pause");
    CloseHandle(hSnapshot);
    return pe.th32ProcessID;
    }
    }
    CloseHandle(hSnapshot);
    return 0;*/

 

    

}

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值