注册表 - NetworkList配置文件 - 无法通过程序访问

问题描述 投票:2回答: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)

该代码最终也不打印任何键,在到达结尾时给出了预期的WindowsError。

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

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

c# python registry vpn
2个回答
0
投票

您只需使用管理员权限读取NetworkList密钥,只需将KEY_ALL_ACCESS更改为KEY_READ即可。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.