如何杀掉本地和远程NT系统进程

远程查杀进程 关于进程的读取,去的权限,从而进行高级权限的查杀。 立即下载

如何杀掉本地和远程NT系统进程

前面我们说了四种查看本地、远程系统进程的办法,接下来我们来研究一下怎么杀掉本地、远程NT系统的进程吧,呵呵。

杀掉本地进程其实很简单,取得进程ID后,调用OpenProcess函数打开进程句柄,然后调用TerminateProcess函数就可以杀掉进程了。有些情况下并不能直接打开进程句柄,例如WINLOGON等系统进程,因为权限不够。这个时候我们就得先提升自己的进程的权限了。提升权限过程也不复杂,先调用GetCurrentProcess函数取得当前进程的句柄,然后调用OpenProcessToken打开当前进程的访问令牌,接着调用LookupPrivilegeValue函数取得你想提升的权限的值,最后调用AdjustTokenPrivileges函数给当前进程的访问令牌增加权限就可以了。一般有了SeDebugPrivilege特权后,就可以杀掉除Idle外的所有进程了。
OK!那如何杀掉远程进程呢?说起来有点复杂,但其实也不难。

<1>与远程系统建立IPC连接
<2>在远程系统的系统目录admin$/system32中写入一个文件killsrv.exe
<3>调用函数OpenSCManager打开远程系统的Service Control Manager[SCM]
<4>调用函数CreateService在远程系统创建一个服务,服务指向的程序是在<2>中写入的程序killsrv.exe
<5>调用函数StartService启动刚才创建的服务,把想杀掉的进程的ID作为参数传递给它
<6>服务启动后,killsrv.exe运行,杀掉进程
<7>清场
嗯!这样看来,我们需要两个程序了。Killsrv.exe的源代码如下:
/***********************************************************************
Module:Killsrv.c
Date:2001/4/27
Author:ey4s<ey4s@21cn.com>
Http://www.ey4s.org
***********************************************************************/
#include <stdio.h>
#include <windows.h>
#include "function.c"
#define ServiceName "PSKILL"

SERVICE_STATUS_HANDLE ssh;
SERVICE_STATUS ss;
/////////////////////////////////////////////////////////////////////////
void ServiceStopped(void)
{
ss.dwServiceType=SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS;
ss.dwCurrentState=SERVICE_STOPPED;
ss.dwControlsAccepted=SERVICE_ACCEPT_STOP;
ss.dwWin32ExitCode=NO_ERROR;
ss.dwCheckPoint=0;
ss.dwWaitHint=0;
SetServiceStatus(ssh,&ss);
return;
}
/////////////////////////////////////////////////////////////////////////
void ServicePaused(void)
{
ss.dwServiceType=SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS;
ss.dwCurrentState=SERVICE_PAUSED;
ss.dwControlsAccepted=SERVICE_ACCEPT_STOP;
ss.dwWin32ExitCode=NO_ERROR;
ss.dwCheckPoint=0;
ss.dwWaitHint=0;
SetServiceStatus(ssh,&ss);
return;
}
void ServiceRunning(void)
{
ss.dwServiceType=SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS;
ss.dwCurrentState=SERVICE_RUNNING;
ss.dwControlsAccepted=SERVICE_ACCEPT_STOP;
ss.dwWin32ExitCode=NO_ERROR;
ss.dwCheckPoint=0;
ss.dwWaitHint=0;
SetServiceStatus(ssh,&ss);
return;
}
/////////////////////////////////////////////////////////////////////////
void WINAPI servier_ctrl(DWORD Opcode)//服务控制程序
{
switch(Opcode)
{
case SERVICE_CONTROL_STOP://停止Service
ServiceStopped();
break;
case SERVICE_CONTROL_INTERROGATE:
SetServiceStatus(ssh,&ss);
break;
}
return;
}
//////////////////////////////////////////////////////////////////////////////
//杀进程成功设置服务状态为SERVICE_STOPPED
//失败设置服务状态为SERVICE_PAUSED
//
void WINAPI ServiceMain(DWORD dwArgc,LPTSTR *lpszArgv)
{
ssh=RegisterServiceCtrlHandler(ServiceName,servier_ctrl);
if(!ssh)
{
ServicePaused();
return;
}
ServiceRunning();
Sleep(100);
//注意,argv[0]为此程序名,argv[1]为pskill,参数需要递增1
//argv[2]=target,argv[3]=user,argv[4]=pwd,argv[5]=pid
if(KillPS(atoi(lpszArgv[5])))
ServiceStopped();
else
ServicePaused();
return;
}
/////////////////////////////////////////////////////////////////////////////
void main(DWORD dwArgc,LPTSTR *lpszArgv)
{
SERVICE_TABLE_ENTRY ste[2];
ste[0].lpServiceName=ServiceName;
ste[0].lpServiceProc=ServiceMain;
ste[1].lpServiceName=NULL;
ste[1].lpServiceProc=NULL;
StartServiceCtrlDispatcher(ste);
return;
}
/////////////////////////////////////////////////////////////////////////////
function.c中有两个函数,一个是提升权限的,一个是提供进程ID,杀进程的。代码如
下:
/***********************************************************************
Module:function.c
Date:2001/4/28
Author:ey4s<ey4s@21cn.com>
Http://www.ey4s.org
***********************************************************************/
#include <windows.h>
////////////////////////////////////////////////////////////////////////////
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;
// Enable the privilege or disable all privileges.
AdjustTokenPrivileges(
hToken,
FALSE,
&tp,
sizeof(TOKEN_PRIVILEGES),
(PTOKEN_PRIVILEGES) NULL,
(PDWORD) NULL);
// Call GetLastError to determine whether the function succeeded.
if (GetLastError() != ERROR_SUCCESS)
{
printf("AdjustTokenPrivileges failed: %u/n", GetLastError() );
return FALSE;
}
return TRUE;
}
////////////////////////////////////////////////////////////////////////////
BOOL KillPS(DWORD id)
{
HANDLE hProcess=NULL,hProcessToken=NULL;
BOOL IsKilled=FALSE,bRet=FALSE;
__try
{

if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hProcessToken))
{
printf("/nOpen Current Process Token failed:%d",GetLastError());
__leave;
}
//printf("/nOpen Current Process Token ok!");
if(!SetPrivilege(hProcessToken,SE_DEBUG_NAME,TRUE))
{
__leave;
}
printf("/nSetPrivilege ok!");

if((hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,id))==NULL)
{
printf("/nOpen Process %d failed:%d",id,GetLastError());
__leave;
}
//printf("/nOpen Process %d ok!",id);
if(!TerminateProcess(hProcess,1))
{
printf("/nTerminateProcess failed:%d",GetLastError());
__leave;
}
IsKilled=TRUE;
}
__finally
{
if(hProcessToken!=NULL) CloseHandle(hProcessToken);
if(hProcess!=NULL) CloseHandle(hProcess);
}
return(IsKilled);
}
//////////////////////////////////////////////////////////////////////////////////////////////
OK!服务端的程序已经好了。接下来还需要一个客户端。如果通过在客户端运行的时候,把killsrv.exe COPY到远程系统上,那么就需要提供两个exe文件给用户,这样显得不是很专业,呵呵。不如我们就把killsrv.exe的二进制码作为buff保存在客户端吧,这样在运行的时候,我们直接把buff中的内容写过去,这样提供给用户一个exe文件就可以了。Pskill.c的源代码如下:
/*********************************************************************************************
Module:PsKill.c
Create:2001/4/28
Modify:2001/6/23
Author:ey4s<ey4s@21cn.com>
Http://www.ey4s.org
PsKill ==>Local and Remote process killer for windows 2k
**************************************************************************/
#include "ps.h"
#define EXE "killsrv.exe"
#define ServiceName "PSKILL"

#pragma comment(lib,"mpr.lib")
//////////////////////////////////////////////////////////////////////////
//定义全局变量
SERVICE_STATUS ssStatus;
SC_HANDLE hSCManager=NULL,hSCService=NULL;
BOOL bKilled=FALSE;
char szTarget[52]={0};
//////////////////////////////////////////////////////////////////////////
BOOL ConnIPC(char *,char *,char *);//建立IPC连接函数
BOOL InstallService(DWORD,LPTSTR *);//安装服务函数
BOOL WaitServiceStop();//等待服务停止函数
BOOL RemoveService();//删除服务函数
/////////////////////////////////////////////////////////////////////////
int main(DWORD dwArgc,LPTSTR *lpszArgv)
{
BOOL bRet=FALSE,bFile=FALSE;
char tmp[52]={0},RemoteFilePath[128]={0},
szUser[52]={0},szPass[52]={0};
HANDLE hFile=NULL;
DWORD i=0,dwIndex=0,dwWrite,dwSize=sizeof(exebuff);

//杀本地进程
if(dwArgc==2)
{
if(KillPS(atoi(lpszArgv[1])))
printf("/nLoacl Process %s have beed killed!",lpszArgv[1]);
else
printf("/nLoacl Process %s can't be killed!ErrorCode:%d",
lpszArgv[1],GetLastError());
return 0;
}
//用户输入错误
else if(dwArgc!=5)
{
printf("/nPSKILL ==>Local and Remote Process Killer"
"/nPower by ey4s<ey4s@21cn.com>"
"/nhttp://www.ey4s.org 2001/6/23"
"/n/nUsage:%s <PID> <==Killed Local Process"
"/n %s <IP> <User> <PWD> <PID> <==Killed Remote Process/n",
lpszArgv[0],lpszArgv[0]);
return 1;
}
//杀远程机器进程
strncpy(szTarget,lpszArgv[1],sizeof(szTarget)-1);
strncpy(szUser,lpszArgv[2],sizeof(szUser)-1);
strncpy(szPass,lpszArgv[3],sizeof(szPass)-1);

//将在目标机器上创建的exe文件的路径
sprintf(RemoteFilePath,"////%s//admin$//system32//%s",szTarget,EXE);
__try
{
//与目标建立IPC连接
if(!ConnIPC(szTarget,szUser,szPass))
{
printf("/nConnect to %s failed:%d",szTarget,GetLastError());
return 1;
}
printf("/nConnect to %s success!",szTarget);
//在目标机器上创建exe文件

hFile=CreateFile(RemoteFilePath,GENERIC_ALL,FILE_SHARE_READ|FILE_SHARE_WRIT
E,
NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile==INVALID_HANDLE_VALUE)
{
printf("/nCreate file %s failed:%d",RemoteFilePath,GetLastError());
__leave;
}
//写文件内容
while(dwSize>dwIndex)
{

if(!WriteFile(hFile,&exebuff[dwIndex],dwSize-dwIndex,&dwWrite,NULL))
{
printf("/nWrite file %s
failed:%d",RemoteFilePath,GetLastError());
__leave;
}
dwIndex+=dwWrite;
}
//关闭文件句柄
CloseHandle(hFile);
bFile=TRUE;
//安装服务
if(InstallService(dwArgc,lpszArgv))
{
//等待服务结束
if(WaitServiceStop())
{
//printf("/nService was stoped!");
}
else
{
//printf("/nService can't be stoped.Try to delete it.");
}
Sleep(500);
//删除服务
RemoveService();
}
}
__finally
{
//删除留下的文件
if(bFile) DeleteFile(RemoteFilePath);
//如果文件句柄没有关闭,关闭之~
if(hFile!=NULL) CloseHandle(hFile);
//Close Service handle
if(hSCService!=NULL) CloseServiceHandle(hSCService);
//Close the Service Control Manager handle
if(hSCManager!=NULL) CloseServiceHandle(hSCManager);
//断开ipc连接
wsprintf(tmp,"////%s//ipc$",szTarget);
WNetCancelConnection2(tmp,CONNECT_UPDATE_PROFILE,TRUE);
if(bKilled)
printf("/nProcess %s on %s have been
killed!/n",lpszArgv[4],lpszArgv[1]);
else
printf("/nProcess %s on %s can't be
killed!/n",lpszArgv[4],lpszArgv[1]);
}
return 0;
}
//////////////////////////////////////////////////////////////////////////
BOOL ConnIPC(char *RemoteName,char *User,char *Pass)
{
NETRESOURCE nr;
char RN[50]="////";

strcat(RN,RemoteName);
strcat(RN,"//ipc$");

nr.dwType=RESOURCETYPE_ANY;
nr.lpLocalName=NULL;
nr.lpRemoteName=RN;
nr.lpProvider=NULL;

if(WNetAddConnection2(&nr,Pass,User,FALSE)==NO_ERROR)
return TRUE;
else
return FALSE;
}
/////////////////////////////////////////////////////////////////////////
BOOL InstallService(DWORD dwArgc,LPTSTR *lpszArgv)
{
BOOL bRet=FALSE;
__try
{
//Open Service Control Manager on Local or Remote machine
hSCManager=OpenSCManager(szTarget,NULL,SC_MANAGER_ALL_ACCESS);
if(hSCManager==NULL)
{
printf("/nOpen Service Control Manage failed:%d",GetLastError());
__leave;
}
//printf("/nOpen Service Control Manage ok!");
//Create Service
hSCService=CreateService(hSCManager,// handle to SCM database
ServiceName,// name of service to start
ServiceName,// display name
SERVICE_ALL_ACCESS,// type of access to service
SERVICE_WIN32_OWN_PROCESS,// type of service
SERVICE_AUTO_START,// when to start service
SERVICE_ERROR_IGNORE,// severity of service
failure
EXE,// name of binary file
NULL,// name of load ordering group
NULL,// tag identifier
NULL,// array of dependency names
NULL,// account name
NULL);// account password
//create service failed
if(hSCService==NULL)
{
//如果服务已经存在,那么则打开
if(GetLastError()==ERROR_SERVICE_EXISTS)
{
//printf("/nService %s Already exists",ServiceName);
//open service
hSCService = OpenService(hSCManager, ServiceName,
SERVICE_ALL_ACCESS);
if(hSCService==NULL)
{
printf("/nOpen Service failed:%d",GetLastError());
__leave;
}
//printf("/nOpen Service %s ok!",ServiceName);
}
else
{
printf("/nCreateService failed:%d",GetLastError());
__leave;
}
}
//create service ok
else
{
//printf("/nCreate Service %s ok!",ServiceName);
}

// 起动服务
if ( StartService(hSCService,dwArgc,lpszArgv))
{
//printf("/nStarting %s.", ServiceName);
Sleep(20);//时间最好不要超过100ms
while( QueryServiceStatus(hSCService, &ssStatus ) )
{
if ( ssStatus.dwCurrentState == SERVICE_START_PENDING)
{
printf(".");
Sleep(20);
}
else
break;
}
if ( ssStatus.dwCurrentState != SERVICE_RUNNING )
printf("/n%s failed to run:%d",ServiceName,GetLastError());
}
else if(GetLastError()==ERROR_SERVICE_ALREADY_RUNNING)
{
//printf("/nService %s already running.",ServiceName);
}
else
{
printf("/nStart Service %s failed:%d",ServiceName,GetLastError());
__leave;
}
bRet=TRUE;
}//enf of try
__finally
{
return bRet;
}
return bRet;
}
/////////////////////////////////////////////////////////////////////////
BOOL WaitServiceStop(void)
{
BOOL bRet=FALSE;
//printf("/nWait Service stoped");
while(1)
{
Sleep(100);
if(!QueryServiceStatus(hSCService, &ssStatus))
{
printf("/nQueryServiceStatus failed:%d",GetLastError());
break;
}
if(ssStatus.dwCurrentState==SERVICE_STOPPED)
{
bKilled=TRUE;
bRet=TRUE;
break;
}
if(ssStatus.dwCurrentState==SERVICE_PAUSED)
{
//停止服务
bRet=ControlService(hSCService,SERVICE_CONTROL_STOP,NULL);
break;
}
else
{
//printf(".");
continue;
}
}
return bRet;
}
/////////////////////////////////////////////////////////////////////////
BOOL RemoveService(void)
{
//Delete Service
if(!DeleteService(hSCService))
{
printf("/nDeleteService failed:%d",GetLastError());
return FALSE;
}
//printf("/nDelete Service ok!");
return TRUE;
}
/////////////////////////////////////////////////////////////////////////
其中ps.h头文件的内容如下:
/////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <windows.h>
#include "function.c"

unsigned char exebuff[]="这里存放的是killsrv.exe的二进制码";
/////////////////////////////////////////////////////////////////////////////////////////////
以上程序在Windows2000、VC++6.0环境下编译,测试还行。编译好的pskill.exe在我的主页http://www.ey4s.org有下载。其实我们变通一下,改变一下killsrv.exe的内容,例如启动一个cmd.exe什么的,呵呵,这样有了admin权限,并且可以建立IPC连接的时候,不就可以在远程运行命令了吗。象www.sysinternals.com出的psexec.exe和小榕的ntcmd.exe原理都和这差不多的。也许有人会问了,怎么得到程序的二进制码啊?呵呵,随便用一个二进制编辑器,例如UltraEdit等。但是好像不能把二进制码保存为文本,类似这样"/xAB/x77/xCD",所以我们就不能直接用了。懒的去找这样的工具了,自己写个简单的吧,代码如下[我够意思吧~_*]:
/*******************************************************************************************
Module:exe2hex.c
Author:ey4s<ey4s@21cn.com>
Http://www.ey4s.org
Date:2001/6/23
****************************************************************************/
#include <stdio.h>
#include <windows.h>
int main(int argc,char **argv)
{
HANDLE hFile;
DWORD dwSize,dwRead,dwIndex=0,i;
unsigned char *lpBuff=NULL;
__try
{
if(argc!=2)
{
printf("/nUsage: %s <File>",argv[0]);
__leave;
}

hFile=CreateFile(argv[1],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FI
LE_ATTRIBUTE_NORMAL,NULL);
if(hFile==INVALID_HANDLE_VALUE)
{
printf("/nOpen file %s failed:%d",argv[1],GetLastError());
__leave;
}
dwSize=GetFileSize(hFile,NULL);
if(dwSize==INVALID_FILE_SIZE)
{
printf("/nGet file size failed:%d",GetLastError());
__leave;
}
lpBuff=(unsigned char *)malloc(dwSize);
if(!lpBuff)
{
printf("/nmalloc failed:%d",GetLastError());
__leave;
}
while(dwSize>dwIndex)
{
if(!ReadFile(hFile,&lpBuff[dwIndex],dwSize-dwIndex,&dwRead,NULL))
{
printf("/nRead file failed:%d",GetLastError());
__leave;
}
dwIndex+=dwRead;
}
for(i=0;i<dwSize;i++)
{
if((i%16)==0)
printf("/"/n/"");
printf("//x%.2X",lpBuff[i]);
}
}//end of try
__finally
{
if(lpBuff) free(lpBuff);
CloseHandle(hFile);
}
return 0;
}
这样运行:exe2hex killsrv.exe,就把killsrv.exe的二进制码打印到屏幕上了,你可以把它重定向到一个txt文件中去,如exe2hex killsrv.exe >killsrv.txt,然后copy到ps.h中去就OK了。
OK!搞定,收队!有错误的地方,请各位兄弟来信ey4s@21cn.com指教,谢谢:)

远程杀掉mstsc远程连接进程的方法 (1)查询连接ID qwinsta /server:10.125.72.52 (2)杀死连接ID rwinsta /server:10.125.72.52 ID 立即下载

相关推荐

Docker部署FRP实现内网穿透

FRP是一款开源内网穿透工具,通过在公网服务器部署服务端(FRPS),内网设备运行客户端(FRPC)实现外部访问。支持TCP、UDP、HTTP等多种协议。部署时需配置服务端(如群晖NAS使用Docker)和客户端(如Windows下载可执行文件)。服务端需设置监听端口、控制面板及Token认证,客户端需指定服务器地址和相同Token。完成配置后可通过公网IP或域名访问内网资源,并在控制面板监控连接状态。

波哥技术栈 1602

linux远程kill进程

我们在工作中有时候需要在本地机器上远程kill掉另外一台服务器的某个进程,结束操作后返回本地机器继续进行下一步操作。例如我们想要远程kill掉host1上的dd的进程,命令如下: ssh username@host1 “ps -ef|grep dd | awk ‘{print $2}’| xargs kill -9” 如果直接执行如上命令会报如下错误 在这个命令中 $2 会被识别为名称为“2”的...

zzwz010301的博客 3214

STM32F411CEU6实战:用W25Q64存储多张图片,在240x240 LCD上轮播显示(附源码)

本文详细介绍了如何使用STM32F411CEU6通过SPI接口管理W25Q64 Flash中的多张图片,并在240x240 LCD上实现平滑轮播显示。内容涵盖硬件配置、图片存储方案设计、轮播系统实现及性能优化技巧,特别针对SPI传输优化和多图存储管理提供了实用解决方案。附源码,适合嵌入式开发者参考。

weixin_32025789的博客 309

远程kill 服务进程

根据服务名称kill ssh username@host "ps -ef|grep ycloans | awk '{print $2}'| xargs kill -9" 根据端口号kill kill -9 $(lsof -i:9051|awk '{print $2}')

handiiy的博客 1117

CentOS 7.9安装python3.11

CentOS 7.9安装python3.11

leafseelight的专栏 1343

别再乱点U盘里的.exe了!手把手教你清除‘Usb Disk.exe’病毒并恢复隐藏文件

本文详细介绍了如何识别和清除U盘病毒(如Usb Disk.exe),并提供从终止病毒进程到恢复隐藏文件的完整步骤。通过禁用自动播放、清理注册表和使用命令行工具,帮助用户彻底清除病毒并预防未来感染,确保数据安全。

weixin_42530732的博客 595

杀死一个远程进程的方法

<br />最近在写一个对进程操作的工具。经过参考别人的思路和自己的总结,掌握了在Windows下对进程的一些处理方法。<br />现,撰写此文,一来留着备以后参考,二来也希望广大网友给出更好的建议和思路,谢谢。<br />话不多说,开始上代码。<br /> <br />第一个杀死一个进程的方法,就是向该进程发送关闭消息。<br />该方法只能在要杀死的进程有窗口的时候使用。如果没有窗口,则该方法无效!<br />#define DDLX_TEXT_MAX_SIZE 1024 int ddlx_cmn:

点点灵犀 2347

随机森林模型及案例(Python)

1 集成模型简介 集成学习模型使用一系列弱学习器(也称为基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果。 集成学习模型的常见算法有Bagging算法和Boosting算法两种。 Bagging算法的典型机器学习模型为随机森林模型,而Boosting算法的典型机器学习模型则为AdaBoost、GBDT、XGBoost和LightGBM模型。 1.1 Bagging算法简介 Bagging算法的原理类似投票,每个弱学习器都有一票,最终根据所有弱学习器的投

qq_42433311的博客 4万+

linux 远程杀掉进程

第一步:获取进程号 pid=$(ssh root@$remote_host "ps -ef | grep ${tomcat_name} | grep -v grep | awk '{print $2}'"| awk '{print $2}') 第二步:杀掉进程 ssh root@$remote_host "kill -9 ${pid}" 注意: 杀掉远程进程跟杀掉本地进...

彻底拆分,一切可控! 1万+

QGIS-空间分析-核密度分析

本文在QGIS软件中使用核密度估计法分析全球历年的地震数据,旨在分析出地震频发且严重的区域,为地震防控提供参考依据。全球历年地震数据来源于网络,仅用于技术学习探索。通过核密度分析,可以观察到南美、美国西部海岸线和太平洋北部区域在全球地震分布状态中是最为集中和强烈的。

imxiezy的博客 2467

音频——DAC 性能测试

codec DAC 性能测试方法

tyustli 2235

TerminateProcess 杀进程

今天又掉坑里了。用“TerminateProcess”杀某个控制台进程,结果进程杀死了,应用程序还停留在状态栏,任务管理器中的“进程”已找不到被杀死的进程,“应用程序”里还能看到。最后发现是“system("pause");”惹的祸,这个玩意起了一个系统进程。以后慎用。   bool KillProgress(const DWORD&amp; _dwId) { HANDLE hProc...

qq_32250025的博客 3286

Android Input——输入系统介绍(一)

Input 系统对于提供流畅、灵敏和一致的用户交互体验至关重要,它需要在不同的设备、场景和应用中保证输入事件的正确性、及时性和安全性。Android 输入系统是一个复杂但高效的设计,旨在处理来自各种输入设备(如触摸屏、键盘等)的用户交互,并将这些交互转换为应用程序可以理解和响应的形式。EventHub:输入系统的最底层,直接与硬件通信,监听和读取输入设备的原始事件。:从 EventHub 获取原始输入事件,对其进行解析,转化为更高层次的事件,以便上层应用或服务能够理解。

小旭的专栏 1713

如何关闭本地和远程NT/2000系统进程

 如何关闭本地和远程NT系统进程 杀掉本地进程其实很简单,取得进程ID后,调用OpenProcess函数打开进程句柄,然后调用TerminateProcess函数就可以杀掉进程了。有些情况下并不能直接打开进程句柄,例如WINLOGON等系统进程,因为权限不够。这个时候我们就得先提升自己的进程的权限了。提升权限过

知而后定 1422

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

利用tasklist和taskkill实现判断进程数按名称杀掉进程

@echo off set exe=firefox.exe set /a num =5 for /f %%i in ('tasklist^|find /c /i "%exe%"') do if %%i gtr %num% taskkill /f /im %exe% TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F] 描述: 使用该工具按

mighty13的专栏 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

在 CMD 里根据进程名杀掉进程

任务管理器杀进程大家都会,不过如果你的系统被卡到任务管理器都无法操作了,怎么办?拿控制台 CMD 吧! 系列博客: 在 CMD 里根据进程名杀掉进程 - walterlv 在 PowerShell 里根据进程名杀掉进程 - walterlv 本文内容taskkill 命令 taskkill 命令 taskkill /f /t /im chrome.exe /f 表示强制终止进程。如果不指定,那么 taskkill 会给进程发送终止信号,但进程可以阻止退出(例如提示文档需要保存)。指定了,就会强杀进程

walterlv - 吕毅 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Tasklist 显示运行在本地或远程计算机上的所有进程

Tasklist命令用来显示运行在本地或远程计算机上的所有进程,带有多个执行参数。  使用格式  Tasklist [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]  参数含义  /S system 指定连接到的远程系统。  /U [domain

thunder09的专栏--没事就写点儿 1945

一次性杀掉多个进程

可以编辑一个批处理文件应该能够达到目的,例如下面将红色字符保存为“结束.bat”的文件名:要用时找到它双击即可。想结束那些进程只要将它的程序名添加进去即可。还可更快捷可比如还想同时结束记事本进程就再添加一行“Taskkill /F /IM NOTEPAD.EXE”但不包括引号,还添加那些就添加就是了,将它放到鼠标右键上要使用时只要击右键选择它即可非常快捷 @Echo off Ta...

adbc12256的博客 653

在CMD中根据进程名杀掉进程

任务管理器杀进程大家都会,不过如果你的系统被卡到任务管理器都无法操作了,怎么办?拿控制台 CMD 吧! 系列博客: 在 CMD 里根据进程名杀掉进程 - walterlv 在 PowerShell 里根据进程名杀掉进程 - walterlv 本文内容 taskkill 命令 taskkill 命令 taskkill /f /t /im chrome.exe 1 /f 表示强制终止进程。如果不指定,那么 taskkill 会给进程发送终止信号,但进程可以阻止退出(例如提示文档需要保存)。指定了,就会强杀进程。

勤学如春起之苗,不见其增,日有所长! 辍学如磨刀之石,不见其损,日有所亏! 3970

Windows找到对应端口的进程PID并kill掉

得到PID之后,使用taskkill命令杀掉进程,例如杀掉PID为23456的进程。taskkill命令相关帮助。

分享运维&&开发学习成果 1119

在CMD下杀死进程的方式

TASKKILL [/S system [/U username [/P [password]]]]{ [/FI filter] [/PID processid | /IM imagename] } [/T] [/F] 描述:使用该工具按照进程 ID (PID) 或映像名称终止任务。 参数列表:/S system 指定要连接到的远程系统。 /U [domain\]user 指定...

dengliao6082的博客 230

OpenSSH本地和远程端口转发(tunnel)

绑定本地端口 既然SSH可以传送数据,那么我们可以让那些不加密的网络连接,全部改走SSH连接,从而提高安全性。 假定我们要让8080端口的数据,都通过SSH传向远程主机,命令就这样写:   $ ssh -D 8080 user@host SSH会建立一个socket,去监听本地的8080端口。一旦有数据传向那个端口,就自动把它转移到SSH连接上面,发往远程主机。可以

花果山 3497

SSH原理与运用(二):远程操作与端口转发

SSH原理与运用(二):远程操作与端口转发

u014609236的专栏 665

在CMD命令行下关闭进程的命令

【重要】在CMD命令行下关闭进程的命令 ━━━━━━━━━━━━━━━━━━━━━━━━━━ 方法一: 在"运行"中输入:ntsd -c q -pn 程序名字(在MS-Dos中的作用是一样的) 方法二: ntsd使用以下参数杀死进程. c:\>ntsd -c q -p PID 只要你能提供进程的PID,那么你就可以干掉进程. 法二: tskill命令

huomingfei的博客 3233
上一篇: 重新启动服务
下一篇: 关于 Service 设计初步(MSDN节选翻译)
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值