0

レジストリ内の 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 のバージョンを確認してからレジストリの分析を開始するためのボタンです。

4

1 に答える 1