1. 文件占用 1.1 resmon 1.2 openfiles 1.3 第3方工具 2. 端口占用 2.1 端口列表链接 2.2 dynamicportrange 动态端口范围 2.3 excludedportrange 排除端口范围 2.4 显示所有侦听端口及进程ID 2.5 查看单个端口的PID 3. 关闭端口或服务 3.1 RPC-135 3.2 NetBIOS-139 3.3 SMB-445 3.4 5985, 5986 4. 文件共享-web 4.1 windows, linux 4.2 macOS 5. 显示所有侦听端口及进程ID 6. 命令帮助 6.1 netstat -? 6.2 netcfg /? 6.3 netsh ?
1. 文件占用
1.1 resmon
使用系统的 [资源监视器] (Resource Monitor), 文件位置如下:
C:\Windows\System32\resmon.exe
Resmon的3种打开方式:
- 若经常使用可以将以下文件 [发送到:桌面快捷方式],双击打开。
- 直接在CMD命令行里输入命令名 (resmon) 打开。
- [任务管理器]的[性能]页签,右上角[...]菜单: [资源监视器], 打开。
打开资源监视器后,选择CPU页签,在 [关联的句柄] 搜索要查看的文件名。
下方列表会显示占用该文件的进程名称及ID等信息。
1.2 openfiles
> openfiles /?
OPENFILES /parameter [arguments]
描述:允许管理员列出系统上已打开的文件和文件夹或与其断开连接。
参数列表:
/Disconnect 中断至少一个打开的文件的连接。
/Query 显示所有从本地或从共享文件夹打开的文件。
/Local 启用 / 禁用本地打开文件的显示。
/? 显示此帮助消息。
示例:
OPENFILES /Disconnect /?
OPENFILES /Query /?
OPENFILES /Local /?
> openfiles /local
信息: 系统全局标志“维护对象列表”目前已禁用。
> openfiles /local on
成功: 已启用系统全局标志“维护对象列表”。
系统重新启动后这才会生效。
> openfiles
信息: 需要启动系统全局标志“维护对象列表”才能查看本地打开的文件。
请参阅 Openfiles /? 以获得详细信息。
通过本地共享点远程打开的文件:
---------------------------------------------
信息: 没有找到打开的共享文件。
> openfiles
本地打开的文件:
… 这里省略 详细列表 [List … 500行+ ] …
通过本地共享点远程打开的文件:
信息: 没有找到打开的共享文件。
上面省略的 详细列表 [List … 500行+ ] 概述:
列表字段:ID, 过程名称, 打开文件(路径\可执行)
以上3个字段的列表共计511行,统计有进程名称27个,打开的文件或文件夹262个,进程ID有433个。
- 一些文件夹,mui多语言用户界面,db数据库,ttf字体等文件会被多个进程使用。
- 一些可执行程序,会打开多个文件夹及文件。
小结:
- 上面的 resmon 根据输入的 单一文件夹或文件名 列出使用它的进程及ID。
- 这里的 openfiles 一次性列出当前 所有被打开的文件列表 及相关进程及ID。
1.3 第3方工具
下面的方法在网上找到的,还没试过,毕竟上面2种方法已经很方便了。
下载并安装 Sysinternals Suite.
Handle <filename>
下载并安装 Unlocker.
右键点击文件或文件夹,选择 Unlocker。
2. 端口占用
2.1 端口列表链接
2.2 dynamicportrange 动态端口范围
显示动态端口范围
> netsh int ip show dynamicportrange tcp
协议 tcp 动态端口范围(新安装的系统)
启动端口 : 49152
端口数 : 16384
协议 tcp 动态端口范围(系统更新后)
启动端口 : 1024
端口数 : 64511
更改动态端口分配所使用端口的范围。
> netsh int ip set dynamicportrange ?
> netsh int ip set dynamicportrange protocol=tcp startport=10000 numberofports=20000
2.3 excludedportrange 排除端口范围
显示所有排除的端口范围
> netsh int ip show excludedportrange tcp
协议 tcp 端口排除范围
开始端口 结束端口
* - 管理的端口排除。
为连续的端口块添加排除。
> netsh int ip add excludedportrange ?
> netsh int ip add excludedportrange protocol=tcp startport=50000 numberofports=20
为连续的端口块删除排除
> netsh int ip delete excludedportrange ?
> netsh int ip delete excludedportrange protocol=tcp startport=50000 numberofports=20
startport 和 numberofports 应该与以前创建的排除完全相同。可通过 show 查看。
2.4 显示所有侦听端口及进程ID
> netstat -ano
活动连接
协议 本地地址 外部地址 状态 PID TCP 0.0.0.0:5040 0.0.0.0:0 LISTENING 4844 TCP [::1]:49664 [::]:0 LISTENING 3788 UDP 0.0.0.0:5050 *:* 4844 UDP 127.0.0.1:1900 *:* 8608 UDP 127.0.0.1:49664 127.0.0.1:49664 3380 UDP 127.0.0.1:49666 *:* 8608 UDP [::1]:1900 *:* 8608 UDP [::1]:49665 *:* 8608
2.5 查看单个端口的PID
查看被占用端口对应的 PID
> netstat -aon | findstr 1900
UDP 127.0.0.1:1900 *:* 8608
UDP [::1]:1900 *:* 8608
查看指定 PID 的进程名
> tasklist | findstr 8608
svchost.exe 8608 Services 0 10,044 K
注,
- 在 [任务管理器] 的 [详细信息] 页签,使用PID排序,很容易找到具体进程。
- 在 [任务管理器] 的 [服务] 页签,使用PID排序,也很容易找到具体进程。
- 这里出现的PID,都是系统服务进程。
- 这里没有的PID则是第3方程序,例如Chrome浏览器,soffice,LibreOffice文档软件等。
3. 关闭端口或服务
3.1 RPC-135
RpcSs (Remote Procedure Call (RPC))
C:\WINDOWS\system32\svchost.exe -k rpcss -p
RPCSS 服务是 COM 和 DCOM 服务器的服务控制管理器。
它执行 COM 和 DCOM 服务器的对象激活请求、对象导出程序解析和分布式垃圾回收。
如果此服务被停用或禁用,则使用 COM 或 DCOM 的程序将无法正常工作。
新装的Windows11,这个服务无法关闭,也不能禁用,不知道是不是因为没有激活,部分操作被限制。
以下是网上找到的关闭方法,不知道是否有更好的方法。
win+R 运行: dcomcnfg 打开 组件服务
选择我的电脑,右键属性,默认属性页签,取消勾选(在此计算机上启用分布式COM)
默认协议页签,移除DCOM里的协议。
win+R 运行: regedit 打开 注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\internet
Rpc下,新建项:internet
重启即可
注: 这里注册表添加项,不知道有什么用...
3.2 NetBIOS-139
- 开始 → 搜索 → [控制面板]
- [控制面板] → [网络和共享中心] → [更改适配器设置] 打开 [网络连接]
- [网络连接] 这里列出系统的网卡,在所有会使用到的网卡里关闭:有线以太网卡,无线网卡,USB网卡等。
- 右键具体 [网卡] → [属性] 打开 具体的 [网卡属性]
- [网卡属性] → 选中 [Internet协议版本4 (TCP/IPv4)] → 点击 [属性] 打开 [Internet协议版本4 (TCP/IPv4) 属性]
- [Internet协议版本4 (TCP/IPv4) 属性] → [高级] 打开 [高级 TCP/IP 设置]
- [高级 TCP/IP 设置] → [WINS]页签 → 选中 [禁用 TCP/IP 上的 NetBIOS]
3.3 SMB-445
Microsoft-DS (Microsoft Directory Services) SMB (Server Message Block) 文件共享服务
win+R 运行: regedit 打开 注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters
新建QWORD(64位)值 (SMBDericeEnabled)
注: 这里注册表添加值,不知道有什么用...
关闭Server服务
几十年来,我都是直接禁用Server服务。 这个服务默认启用,结果是开放所有磁盘的$默认共享,一丝不挂的隐藏共享...
3.4 5985, 5986
win+R 运行: firewall.cpl 打开 防火墙
防火墙 高级设置
通过端口 找出对应的策略,阻止即可。
Windows 远程管理(HTTP-In)
4. 文件共享-web
通过上面的操作,系统安全性增加了,但也失去了局域网内文件共享的便利性。
下面介绍更安全的web文件分享,这种方式使用web页面分享文件,始终是单向且只读的。
有非常多的软件提供web服务功能,感觉python附带的最方便。随时用随时开。
只需要安装Python最新版,然后在需要共享的目录下执行下方的命令即可。
而局域网内需要获取文件的用户,只需要使用浏览器输入上面分享主机的IP地址及端口号即可浏览文件,选择下载。
4.1 windows, linux
python -m http.server
python -m http.server 9000
4.2 macOS
python3 -m http.server 9000
Localhost:9000
alias http-server="python3 -m http.server"
http-server 8080
5. 显示所有侦听端口及进程ID
关闭了以上端口,结合任务管理器,查看侦听端口及进程信息。
> netstat -ano 列出进程列表及PID,再通过PID找到相应的服务名称或程序名称
协议 | 本地地址 | 外部地址 | 状态 | PID | 服务名 (显示名) | C:\WINDOWS\system32\svchost.exe |
UDP | 0.0.0.0:5355 | *:* | 2280 | Dnscache (DNS Client) |
-k NetworkService -p | |
UDP | [::]:5355 | *:* | 2280 | |||
UDP | 127.0.0.1:49664 | 127.0.0.1:49664 | 3464 | Iphlpsvc (IP Helper) | -k NetSvcs -p | |
TCP | 192.168.10.10:50264 | 4.145.79.80:443 | ESTABLISHED | 3660 | WpnService Windows 推送通知系统服务 |
-k NetSvcs -p |
TCP | 192.168.10.10:50381 | 4.145.79.80:443 | ESTABLISHED | 3660 | ||
TCP | 0.0.0.0:5040 | 0.0.0.0:0 | LISTENING | 5360 | CDPSvc 连接设备平台服务 |
-k LocalService -p |
UDP | 0.0.0.0:5050 | *:* | 5360 | |||
UDP | 127.0.0.1:1900 | *:* | 5520 | SSDPSRV SSDP Discovery |
-k LocalServiceAndNoImpersonation -p | |
UDP | 127.0.0.1:49560 | *:* | 5520 | |||
UDP | [::1]:1900 | *:* | 5520 | |||
UDP | [::1]:49559 | *:* | 5520 | |||
TCP | 0.0.0.0:7680 | 0.0.0.0:0 | LISTENING | 10400 | DoSvc Delivery Optimization |
-k NetworkService -p |
TCP | [::]:7680 | [::]:0 | LISTENING | 10400 | ||
TCP | [::1]:49664 | [::]:0 | LISTENING | 3492 | jhi_service | C:\WINDOWS\System32\DriverStore\FileRepository\ Dal.inf_amd64_af50fdb80983f7bc\jhi_service.exe |
TCP | 127.0.0.1:49836 | 127.0.0.1:49837 | ESTABLISHED | 9940 | firefox.exe 浏览器 |
这是上面:[jhi_service] 服务的描述 Intel(R) Dynamic Application Loader Host Interface Service. Allows applications to access the local Intel (R) DAL 英特尔(R) 动态应用程序加载器主机接口服务。 允许应用程序访问本地英特尔(R) DAL |
TCP | 127.0.0.1:49837 | 127.0.0.1:49836 | ESTABLISHED | 9940 | ||
TCP | 127.0.0.1:49838 | 127.0.0.1:49839 | ESTABLISHED | 10900 | ||
TCP | 127.0.0.1:49839 | 127.0.0.1:49838 | ESTABLISHED | 10900 |
6. 命令帮助
6.1 netstat -?
显示协议统计信息和当前 TCP/IP 网络连接。
NETSTAT [-a] [-b] [-e] [-f] [-i] [-n] [-o] [-p proto] [-r] [-s] [-t] [-x] [-y] [interval]
-a 显示所有连接和侦听端口。
-b 显示创建每个连接所涉及的可执行文件或侦听端口。
在某些情况下,已知的可执行文件托管多个独立组件,在这些情况下,将显示创建连接或侦听端口所涉及的组件序列。
在这种情况下,可执行文件名称位于 [] 底部,顶部是它调用的组件,此类推,直到达到 TCP/IP。
依请注意,此选项可能很耗时,并且会失败,除非你有足够的权限。
-c 显示按当前使用的 TCP 或 UDP 端口数排序的进程列表。
-d 显示每个连接分配的 DSCP 值。
-d 显示以太网统计信息。这可以与 -s 选项结合使用。
-f 显示外部的完全限定的域名 (FQDN) 地址。
-i 显示 TCP 连接在其当前状态下所用的时间。
-n 以数字形式显示地址和端口号。
-o 显示与每个连接关联的拥有进程 ID。
-p [*] 显示 proto 指定的协议的连接;proto 可以是以下任一项: TCP、UDP、TCPv6 或 UDPv6。
如果与 -s 选项一起使用以显示每个协议统计信息,则 proto 可以是以下任一项: IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-q 显示所有连接、侦听端口和绑定非侦听 TCP 端口。 绑定的非侦听端口可能已与或未与活动连接相关联。
-r 显示路由表。
-s 显示每个协议的统计信息。(-p 选项可用于指定默认值的子集)
默认情况下,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息。
-t 显示当前的连接卸载状态。
-x 显示 NetworkDirect 连接、侦听器和共享终结点。
-y 显示所有连接的 TCP 连接模板。 无法与其他选项结合使用。
间隔 重播所选统计信息、每次显示之间的暂停间隔秒数。
按 CTRL+C 停止重新显示统计信息。
如果省略,netstat 将打印当前配置信息一次。
6.2 netcfg /?
netcfg [-v] [-winpe] [-l <full-path-to-component-INF>] -c <p|s|c> -i <comp-id>
-winpe 为 Windows 预安装环境安装 TCP/IP、NetBIOS和 Microsoft 客户端
-l 提供 INF 的位置
-c 提供要安装的组件的类(p 代表协议、s 代表服务、c 代表客户端)
-i 提供组件 ID
参数必须按照所示顺序传递。
示例:
> netcfg -l c:\oemdir\myprot.inf -c p -i myprot
使用 c:\oemdir\myprot.inf 安装协议 "myprot"
> netcfg -c s -i MS_Server
安装服务 "MS_Server"
> netcfg -v -winpe
为 Windows 预安装环境安装 TCP/IP、NetBIOS和 Microsoft 客户端
netcfg [-v] -q <comp-id>
> netcfg -q MS_IPX
显示是否安装了组件 "MS_IPX"
netcfg [-v] -u <comp-id>
> netcfg -u MS_IPX
卸载组件 "MS_IPX"
netcfg [-v] -s <a|n>
-s 提供要显示的组件的类型(a 代表适配器,n 代表网络组件)
> netcfg -s n
显示所有已安装的网络组件
netcfg [-v] -b <comp-id>
> netcfg -b ms_tcpip
显示包含 "MS_TCPIP" 的绑定路径
netcfg [-v] -m
> netcfg -m
将绑定映射输出到当前目录中的 NetworkBindingMap.txt。 -v 还将显示映射到控制台的绑定映射。
> netcfg -d
在所有网络设备上执行清理。这需要重新启动。
> netcfg -x
在网络设备上执行清理,并跳过没有物理对象名称的对象。这需要重新启动。
一般说明:
-v 以详细模式运行
-? 显示此帮助信息
6.3 netsh ?
用法: C:\WINDOWS\system32\netsh.exe [-a AliasFile] [-c Context] [-r RemoteMachine] [-u [DomainName\]UserName] [-p Password | *] [Command | -f ScriptFile]
下列指令有效: 此上下文中的命令:
advfirewall 更改到 `netsh advfirewall' 上下文。 branchcache 更改到 `netsh branchcache' 上下文。 bridge 更改到 `netsh bridge' 上下文。 dhcpclient 更改到 `netsh dhcpclient' 上下文。 dnsclient 更改到 `netsh dnsclient' 上下文。 firewall 更改到 `netsh firewall' 上下文。 http 更改到 `netsh http' 上下文。 interface 更改到 `netsh interface' 上下文。 ipsec 更改到 `netsh ipsec' 上下文。 lan 更改到 `netsh lan' 上下文。 mbn 更改到 `netsh mbn' 上下文。 namespace 更改到 `netsh namespace' 上下文。 netio 更改到 `netsh netio' 上下文。 nlm 更改到 `netsh nlm' 上下文。 ras 更改到 `netsh ras' 上下文。 rpc 更改到 `netsh rpc' 上下文。 trace 更改到 `netsh trace' 上下文。 wcn 更改到 `netsh wcn' 上下文。 wfp 更改到 `netsh wfp' 上下文。 winhttp 更改到 `netsh winhttp' 上下文。 winsock 更改到 `netsh winsock' 上下文。 wlan 更改到 `netsh wlan' 上下文。 set 更新配置设置。 add 在项目列表上添加一个配置项目。 delete 在项目列表上删除一个配置项目。 exec 运行一个脚本文件。 dump 显示一个配置脚本。 show 显示信息。 help 显示命令列表。 ? 显示命令列表。
下列的子上下文可用:
advfirewall branchcache bridge dhcpclient dnsclient firewall http interface ipsec lan mbn namespace netio nlm ras rpc trace wcn wfp winhttp winsock wlan
若需要命令的更多帮助信息,请键入命令,接着是空格,后面跟?。
sztom
osoft@qq.com
CC-BY-NC-SA