レジストリ内の Windows サービスの開始値をチェックするプログラムをコーディングしようとしています。辞書 (文字列、ポイント) を使用してサービスの名前をレジストリ (文字列) とデフォルトおよび真の開始値に格納しています。 X が Default、Y が True です。
Private _defaultRegistryVals As New Dictionary(Of String, Point)
Public Enum StartupMode
Disabled = 0
Manual = 1
Auto = 2
AutoDelayed = 3
End Enum
Private Function Analyze as Boolean
Dim mostOfRegistryPath As String = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\"
If Not _HasLoaded then
_defaultRegistryVals.Add("AxInstSV", New Point(StartupMode.Manual, 0))
_defaultRegistryVals.Add("SensrSvc", New Point(StartupMode.Manual, 0))
_defaultRegistryVals.Add("AeLookupSvc", New Point(StartupMode.Manual, 0))
_HasLoaded = True
End If
For Each kvp As KeyValuePair(Of String, Point) In _defaultRegistryVals
Try
kvp.Value.Y = TryCast( My.Computer.Registry.GetValue (mostOfRegistryPath + kvp.Key), "Start", Nothing), double)
Catch ex As Exception
End Try
Next kvp
ディクショナリは読み取り専用であるため、プログラムがレジストリから各 Windows サービスの開始値の真の値を取得するための最良の方法は何でしょうか。Dictionary エントリを追加するときに各値をチェックする必要がありますか? またはより良い方法はありますか?
これはコード全体ではありませんが、ある程度機能するために必要なスニペットです。他のコードのほとんどは、サービスのリスト全体と、Windows のバージョンを確認してからレジストリの分析を開始するためのボタンです。