查找占用windows文件的进程并干掉它

查找占用windows文件/端口的进程并干掉它

在使用windows的时候总是会遇到很多隐藏在后台的软件,没有退出占用着你的文件或者端口等。一般情况下正常关闭你电脑上的软件就可以了。
但是!但是!但是!
有些流氓软件就是喜欢占用你的文件

1. 查找进程/端口

1.1 利用netstat命令查看绑定端口的进程

1
2
3
4
5
6
7
8
9
10
11
12
netstat命令:

netstat -ano|findstr Port

示例执行:

C:\Users\XXXX>netstat -ano | findstr 443
TCP XXX.XXX.XXX.XXX:58012 XXX.XXX.XXX.XXX:443 ESTABLISHED 3128
TCP XXX.XXX.XXX.XXX:54368 XXX.XXX.XXX.XXX:443 ESTABLISHED 9118
TCP XXX.XXX.XXX.XXX:59427 XXX.XXX.XXX.XXX:443 CLOSE_WAIT 1410
TCP XXX.XXX.XXX.XXX:59785 XXX.XXX.XXX.XXX:443 ESTABLISHED 14781
TCP [::]:443 [::]:0 LISTENING 7868

1.2 利用handle命令查看占用文件的进程

  • 第一步:下载handle
  • 第二步:解压、加PATH
  • 第三步:如下所示运行进程(以微云举例)
1
2
3
4
5
6
7
C:\XXXX\Handle>handle d:\微云同步盘

Nthandle v4.11 - Handle viewer
Copyright (C) 1997-2017 Mark Russinovich
Sysinternals - www.sysinternals.com

explorer.exe pid: 16936 type: File 1296C: D:\?????\.resona\12345678\.resona

PS:Sysinternals是微软官方基于windows提供的免费、绿色、无广告、无插件、纯天然的系统工具包,哈哈。墙裂推荐大家了解下,都十分好用。

2. 干掉占用文件/端口的进程

1
2
3
4
5
6
7
8
9

使用taskkill命令杀掉进程:

taskkill /pid PID -t -f

示例执行:

C:\Users\XXXXX>taskkill /pid 16936 -t -f
成功: 已终止 PID 16936 (属于 PID 856 子进程)的进程。

3. 了解netstat、handle与taskkill命令

3.1 netstat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
显示协议统计信息和当前 TCP/IP 网络连接。

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]

-a 显示所有连接和侦听端口。
-b 显示在创建每个连接或侦听端口时涉及的
可执行程序。在某些情况下,已知可执行程序承载
多个独立的组件,这些情况下,
显示创建连接或侦听端口时
涉及的组件序列。在此情况下,可执行程序的
名称位于底部 [] 中,它调用的组件位于顶部,
直至达到 TCP/IP。注意,此选项
可能很耗时,并且在你没有足够
权限时可能失败。
-e 显示以太网统计信息。此选项可以与 -s 选项
结合使用。
-f 显示外部地址的完全限定
域名(FQDN)。
-n 以数字形式显示地址和端口号。
-o 显示拥有的与每个连接关联的进程 ID。
-p proto 显示 proto 指定的协议的连接;proto
可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s
选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-q 显示所有连接、侦听端口和绑定的
非侦听 TCP 端口。绑定的非侦听端口
不一定与活动连接相关联。
-r 显示路由表。
-s 显示每个协议的统计信息。默认情况下,
显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
-p 选项可用于指定默认的子网。
-t 显示当前连接卸载状态。
-x 显示 NetworkDirect 连接、侦听器和共享
终结点。
-y 显示所有连接的 TCP 连接模板。
无法与其他选项结合使用。
interval 重新显示选定的统计信息,各个显示间暂停的
间隔秒数。按 CTRL+C 停止重新显示
统计信息。如果省略,则 netstat 将打印当前的
配置信息一次。

3.2 handle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Nthandle v4.11 - Handle viewer
Copyright (C) 1997-2017 Mark Russinovich
Sysinternals - www.sysinternals.com

usage: handle [[-a [-l]] [-u] | [-c <handle> [-y]] | [-s]] [-p <process>|<pid>] [name] [-nobanner]
-a Dump all handle information.
-l Just show pagefile-backed section handles.
-c Closes the specified handle (interpreted as a hexadecimal number).
You must specify the process by its PID.
WARNING: Closing handles can cause application or system instability.
-y Don't prompt for close handle confirmation.
-s Print count of each type of handle open.
-u Show the owning user name when searching for handles.
-p Dump handles belonging to process (partial name accepted).
name Search for handles to objects with <name> (fragment accepted).
-nobanner Do not display the startup banner and copyright message.

No arguments will dump all file references.

3.3 taskkill

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
taskkill命令:
TASKKILL [/S system [/U username [/P [password]]]]
{ [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

描述:
使用该工具按照进程 ID (PID) 或映像名称终止任务。

参数列表:
/S system 指定要连接的远程系统。

/U [domain\]user 指定应该在哪个用户上下文执行这个命令。

/P [password] 为提供的用户上下文指定密码。如果忽略,提示输入。

/FI filter 应用筛选器以选择一组任务。
允许使用 "*"。例如,映像名称 eq acme*

/PID processid 指定要终止的进程的 PID。
使用 TaskList 取得 PID。

/IM imagename 指定要终止的进程的映像名称。通配符 '*'可用来
指定所有任务或映像名称。

/T 终止指定的进程和由它启用的子进程。

/F 指定强制终止进程。

/? 显示帮助消息。

筛选器:
筛选器名 有效运算符 有效值
----------- --------------- -------------------------
STATUS eq, ne RUNNING |
NOT RESPONDING | UNKNOWN
IMAGENAME eq, ne 映像名称
PID eq, ne, gt, lt, ge, le PID 值
SESSION eq, ne, gt, lt, ge, le 会话编号。
CPUTIME eq, ne, gt, lt, ge, le CPU 时间,格式为
hh:mm:ss。
hh - 时,
mm - 分,ss - 秒
MEMUSAGE eq, ne, gt, lt, ge, le 内存使用量,单位为 KB
USERNAME eq, ne 用户名,格式为 [domain\]user
MODULES eq, ne DLL 名称
SERVICES eq, ne 服务名称
WINDOWTITLE eq, ne 窗口标题

说明
----
1) 只有在应用筛选器的情况下,/IM 切换才能使用通配符 '*'。
2) 远程进程总是要强行 (/F) 终止。
3) 当指定远程机器时,不支持 "WINDOWTITLE" 和 "STATUS" 筛选器。

例如:
TASKKILL /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM cmd.exe /T
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
TASKKILL /S system /U 域\用户名 /FI "用户名 ne NT*" /IM *
TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"