杀掉explorer进程

bool KillExplorer()
/**************************************************************************************/
/*
/*  杀死explorer进程
/*
/**************************************************************************************/
{
	PWTS_PROCESS_INFO process_info;
	DWORD process_num = 0;

	DWORD current_session_id = 0;
	ProcessIdToSessionId(GetCurrentProcessId(),¤t_session_id);
	sprintf(szLogBuf, "---[%s] 当前用户Session:%d \n",__FUNCTION__, current_session_id);
	LOG4CPLUS_INFO(m_oLog, szLogBuf);

	if(!WTSEnumerateProcesses(WTS_CURRENT_SERVER_HANDLE,0,1,&process_info,&process_num))
	{
		WTSFreeMemory(process_info);
		return false;
	}

	DWORD pid = 0;
	for(unsigned int i=0; i<process_num; i++)
	{
		if( current_session_id == process_info[i].SessionId && strcmp(process_info[i].pProcessName,"explorer.exe") == 0)
		{
			pid = process_info[i].ProcessId;
			break;
		}
	}	
	WTSFreeMemory(process_info);

	if ( pid != 0 )
	{
		//隐藏任务栏
		HWND hwnd=::FindWindow("Shell_TrayWnd",NULL);
		LPARAM lParam;
		lParam = ABS_AUTOHIDE | ABS_ALWAYSONTOP;
		APPBARDATA apBar; 
		memset(&apBar, 0, sizeof(apBar)); 
		apBar.cbSize = sizeof(apBar); 
		apBar.hWnd = hwnd; 
		if(apBar.hWnd != NULL) 
		{ 
			apBar.lParam = lParam; 
			SHAppBarMessage(ABM_SETSTATE, &apBar); //设置任务栏自动隐藏
		} 

		HANDLE hProcessHandle = ::OpenProcess( PROCESS_TERMINATE, FALSE, pid );
		if ( TerminateProcess( hProcessHandle, 1 ) )
		{
			CloseHandle(hProcessHandle);
			sprintf(szLogBuf, "---[%s] 关闭当前用户的explorer进程成功 \n",__FUNCTION__);
			LOG4CPLUS_INFO(m_oLog, szLogBuf);
			return true;
		}
	}
	sprintf(szLogBuf, "---%s(%d):[%s] 未找到当前用户的explorer进程 \n",__FILE__,__LINE__,__FUNCTION__);
	LOG4CPLUS_ERROR(m_oLog, szLogBuf);
	return false;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值