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

时间:2012-09-04 18:28:06

标签: c# python registry vpn

连接到新网络时,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。

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

相关问题