2

新しいネットワークに接続するとき、Windows はそれがホーム ネットワーク、職場ネットワーク、またはパブリック ネットワークのいずれであるかを尋ねます。

私は VPN サービスを使用しており、接続のたびに、Windows はそのダイアログを のように表示します。問題は、数値が常に 1 つ大きいことです。その理由はわかりません。

レジストリで何が起こっているのかを確認しようと思ったところ、見つかりました

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でそれを行う方法を調べました.2日前に初めて読んだだけです。

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、同じ OS で Python をテストしましたが、私の場合と同じ結果でした。なんで?これを解決する方法はありますか?私にはとても奇妙に思えますが、これを実現できれば幸いです。どこにも行かないことにかなりの時間を費やしました。エラーはなく、まだ失敗しています。

2 つの言語と Windows についてこのように投稿してよいかどうかはわかりませんが、これについて助けを求めることができる他の場所を知りません。長々と申し訳ありませんが、必要だと思います。前もって感謝します。

4

2 に答える 2

0

レジストリを表示するために実行しているものはすべて、管理者モードで実行されているだけでなく、64 ビット バージョンであることも確認してください。

于 2017-12-17T05:21:12.000 に答える
0

NetworkList管理者権限でキーを読み取るだけで、 を に変更KEY_ALL_ACCESSするだけKEY_READです。

于 2017-01-05T08:04:22.937 に答える