2

连接到新网络时,Windows 会询问它是家庭网络、工作网络还是公共网络。

我使用 VPN 服务,在每个连接上,Windows 都会显示类似 . 问题是,这个数字总是大一,我不知道为什么。

我想我会检查注册表中发生的事情,发现

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles

所有这些都与其他密钥一起存储在哪个密钥下。然后我决定编写一个程序来检查它们并在再次连接之前删除它们,所以它总是会在没有数字的情况下使它成为,防止注册表变得臃肿。很简单,我用 C# 制作了一个 5 行控制台程序,让它要求管理员,以管理员权限运行 Visual Studio,这样我就可以访问注册表。代码是:

RegistryKey key = Registry.LocalMachine;
key = key.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles");
foreach (string subkey in key.GetSubKeyNames())
     Console.WriteLine(subkey);

那只是为了首先列出子项,但即使这样也不起作用,因为某些未知原因,没有找到,但也没有错误消息。

我也查找了如何在 Python 中执行此操作,大约两天前我才第一次阅读。

from _winreg import *
key = OpenKey(HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles', 0, KEY_ALL_ACCESS)
for i in range(1024):
print EnumKey(key, i)

该代码最终也没有打印任何键,在到达末尾时给出 Expected WindowsError。

我当然可以看到名称像 {numbersAndLettersSeparatedByDashes} 的子键,它们叫什么?GUID?还是那些是别的东西?我不明白的是,我发送了 C# 和 Python 代码的人,他们也在他的 Windows 7、x64 上工作,但 C# 仅在它是 Windows 窗体解决方案时才工作。不是在控制台时。在另一台 PC 上测试 Python,相同的操作系统,但结果与我的相同。为什么?有没有办法解决这个问题?对我来说似乎很奇怪,我很乐意完成这件事。花了好几个小时却一无所获。没有错误,仍然失败。

我不知道是否可以为两种语言和 Windows 发布这样的帖子,但我不知道在其他地方可以寻求帮助。也为长度感到抱歉,但我认为这是必要的。提前致谢。

4

2 回答 2

0

您可以NetworkList使用管理员权限读取密钥,只需KEY_ALL_ACCESSKEY_READ.

于 2017-01-05T08:04:22.937 回答
0

确保您正在运行以查看注册表的任何内容不仅在管理员模式下运行,而且是 64 位版本。

于 2017-12-17T05:21:12.000 回答