在 Windows 中,家庭网络、工作网络和公用网络的配置是通过网络类型来控制的。注册表中保存了网络连接的配置和类型信息。下面是这些网络类型在注册表中的位置和详细信息。

在 Windows 中,家庭网络、工作网络和公用网络的配置是通过网络类型来控制的。注册表中保存了网络连接的配置和类型信息。下面是这些网络类型在注册表中的位置和详细信息。
网络类型的注册表位置
网络配置存储在 Windows 注册表中的以下位置:
Copy Code
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles
该位置包含多个子项,每个子项代表一个网络配置文件。每个网络配置文件对应一个网络连接,包括家庭网络、工作网络和公用网络。
查看网络类型
-
打开注册表编辑器:
- 按下
Win + R键,输入regedit,然后按 Enter 键。
- 按下
-
导航到网络配置的位置:
Copy CodeHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles -
查看网络配置文件: 在
Profiles下,你将看到一组以 GUID(全局唯一标识符)命名的子项,每个子项代表一个网络连接配置。reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles" /s /f "" /k -
你可以通过查看这些子项中的
ProfileName字段来识别网络的名称。- 每个配置文件中有一个
Category键,用来表示网络类型。该键的值如下:0:公用网络(Public Network)1:工作网络(Work Network)2:家庭网络(Home Network)
- 每个配置文件中有一个
示例:
在某个网络配置的注册表项下,你可能会看到类似如下的字段:
Copy Code
Category = 1 (表示工作网络)
ProfileName = "MyHomeNetwork"
修改网络类型
通常,不建议直接修改注册表来更改网络类型,因为这可能会影响网络连接的稳定性和功能。如果需要更改网络类型,建议使用以下方法:
- 通过“网络和共享中心”更改:
- 打开“控制面板” → “网络和共享中心”。
- 点击你正在连接的网络旁边的“连接”链接。
- 点击“网络类型”,然后选择你想要的网络类型(家庭网络、工作网络或公用网络)。
- 使用
secpol.msc(本地安全策略管理器)手动查看和编辑安全设置。


批处理(.bat) 制作一个交互式菜单,让用户选择三种 Windows 网络连接配置文件类型(Public 公用 / Private 专用 / Domain 域),并提供 两种代码实现方式 + 三种底层技术:
- ✅ 方式一:纯 CMD 批处理 +
netsh(仅支持 Public/Private,Domain 需域环境) - ✅ 方式二:调用 PowerShell 命令(完整支持三种模式)
- 🔧 底层技术覆盖:
- CMD 命令(
netsh interface set interface+ 网络发现控制) - PowerShell 命令(
Set-NetConnectionProfile) - 注册表(Regedit) 手动路径说明(供高级用户参考)
- CMD 命令(
✅ 方式一:纯 CMD 批处理(兼容 Win7~Win11,但 Domain 无法设置)
⚠️ 注意:CMD 无法直接设为 "Domain",因该模式由域控制器自动分配。以下仅实现 Public / Private 切换。
bat
编辑
@echo off
chcp 65001 >nul
title 网络配置文件设置工具 - CMD版
color 0a
:MENU
cls
echo.
echo =============================================
echo 请选择网络配置文件类型:
echo =============================================
echo 1. 公用网络 (Public) - 最高安全,关闭共享
echo 2. 专用网络 (Private) - 允许局域网发现与共享
echo 3. 查看当前网络类型
echo 4. 退出
echo =============================================
echo.
set /p choice=请输入选项 [1-4]:
if "%choice%"=="1" goto SET_PUBLIC
if "%choice%"=="2" goto SET_PRIVATE
if "%choice%"=="3" goto SHOW_PROFILE
if "%choice%"=="4" exit
goto MENU
:SHOW_PROFILE
cls
echo 当前网络配置文件:
netsh advfirewall show currentprofile state
timeout /t 3 >nul
goto MENU
:SET_PUBLIC
cls
echo 正在设置为【公用网络】...
:: 关闭网络发现和文件共享(通过防火墙策略)
netsh advfirewall set currentprofile state on
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 0 /f >nul 2>&1
echo 设置完成!已启用最高安全策略。
timeout /t 2 >nul
goto MENU
:SET_PRIVATE
cls
echo 正在设置为【专用网络】...
:: 启用网络发现(需确保防火墙允许)
netsh advfirewall set currentprofile state on
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f >nul 2>&1
echo 设置完成!已允许局域网设备发现。
timeout /t 2 >nul
goto MENU
🔍 说明:
- 通过修改注册表
Category值(0=Public, 1=Private)影响系统识别;- 实际生效需断开重连网络或重启“Network Location Awareness”服务;
- Domain 模式无法通过本地设置实现(必须加入 Active Directory 域)。
✅ 方式二:调用 PowerShell 的批处理(推荐,Win8+ 支持完整三种模式)
bat
编辑
@echo off
chcp 65001 >nul
title 网络配置文件设置工具 - PowerShell版
color 0b
:MENU
cls
echo.
echo =============================================
echo 请选择网络配置文件类型:
echo =============================================
echo 1. 公用网络 (Public)
echo 2. 专用网络 (Private)
echo 3. 域网络 (Domain) [仅限已加入域的计算机]
echo 4. 查看当前所有网络配置文件
echo 5. 退出
echo =============================================
echo.
set /p choice=请输入选项 [1-5]:
if "%choice%"=="1" (
powershell -Command "Set-NetConnectionProfile -NetworkCategory Public; Write-Host '已设为【公用网络】' -ForegroundColor Green"
timeout /t 2 >nul
goto MENU
)
if "%choice%"=="2" (
powershell -Command "Set-NetConnectionProfile -NetworkCategory Private; Write-Host '已设为【专用网络】' -ForegroundColor Green"
timeout /t 2 >nul
goto MENU
)
if "%choice%"=="3" (
echo 注意:仅当计算机已加入域时才有效!
powershell -Command "Set-NetConnectionProfile -NetworkCategory Domain; Write-Host '尝试设为【域网络】' -ForegroundColor Yellow"
timeout /t 3 >nul
goto MENU
)
if "%choice%"=="4" (
echo 当前网络配置文件列表:
powershell -Command "Get-NetConnectionProfile | Format-Table InterfaceAlias, NetworkCategory, IPv4Connectivity"
pause
goto MENU
)
if "%choice%"=="5" exit
goto MENU
✅ 优势:
- 使用
Set-NetConnectionProfile命令,立即生效,无需重启;- 可查看所有网络接口的 Profile;
- 完整支持三种模式(Domain 需环境支持)。
🔧 三种底层技术详解
1. CMD 命令(netsh + 注册表)
- 命令:
netsh advfirewall控制防火墙行为; - 注册表路径:
text编辑
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\- 每个子项对应一个网络;
Category值:0= Public1= Private2= Domain(通常只读,由系统自动设)
⚠️ 直接改注册表后需重启 NlaSvc 服务或重连网络才生效。
2. PowerShell 命令(推荐)
powershell
编辑
# 查看
Get-NetConnectionProfile
# 设置(替换 InterfaceIndex 或使用别名)
Set-NetConnectionProfile -InterfaceIndex 12 -NetworkCategory Private
# 或按名称
Set-NetConnectionProfile -InterfaceAlias "Wi-Fi" -NetworkCategory Public
- 优点:微软官方 API,安全可靠,即时生效;
- 权限:需以管理员身份运行。
3. 注册表手动修改(高级用户)
- 按
Win+R输入regedit; - 导航至:
text编辑
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\ - 找到当前连接的网络(看
Description或Source); - 修改
Category的 DWORD 值:0→ Public1→ Private2→ Domain(不建议手动改)
- 重启 Network Location Awareness 服务:
cmd编辑
net stop NlaSvc && net start NlaSvc
❗ 警告:错误修改注册表可能导致网络异常!
✅ 使用建议
| 场景 | 推荐方式 |
|---|---|
| 普通家庭/办公用户 | 方式二(PowerShell版批处理) |
| 无 PowerShell 的老旧系统(如 Win7) | 方式一(CMD版),仅限 Public/Private |
| 自动化脚本部署 | 直接写 PowerShell 脚本(.ps1) |
| 故障排查 | 查看注册表 + Get-NetConnectionProfile |
📌 总结
- Public / Private 可通过本地设置切换;
- Domain 模式必须加入企业域才能激活,无法强制设置;
- PowerShell 是最安全、高效的方式;
- 批处理菜单可封装为
.bat文件,双击即用,适合 IT 运维快速配置。
💡 将上述任一代码保存为
SetNetworkProfile.bat,右键“以管理员身份运行”即可使用。

浙公网安备 33010602011771号