2017-01-27 1 views
0

다음 위치에서 레지스트리를 검색하려면 다음 함수를 사용하십시오. "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall". 하지만 시만텍처럼 일부 항목이 누락되었습니다. 수동으로 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall regedit 열면 내가 명확하게 하위 키를 볼 수 있으며 표시 이름입니다.설치된 응용 프로그램에 대한 레지스트리 검색은 흥미로운 결과를 브랜딩하고 있습니다.

Public Shared Function ReadRegistryFromRemoteMachine(machineName As String) As List(Of String) 

    Dim programs As New List(Of String)() 

    Dim softwareRegLoc As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" 

    ' Open Remote Machine Registry Key 
    Dim remoteKey As RegistryKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, machineName) 
    Dim regKey As RegistryKey = remoteKey.OpenSubKey(softwareRegLoc) 

    For Each subKeyName In regKey.GetSubKeyNames() 

     ' Open Registry Sub Key 
     Dim subKey As RegistryKey = regKey.OpenSubKey(subKeyName) 

     ' Read Value from Registry Sub Key 
     Dim softwareName As String = DirectCast(subKey.GetValue("DisplayName"), String) 

     If Not String.IsNullOrEmpty(softwareName) Then 
      If softwareName.ToLower.Contains("update") Then 
      Else 
       If programs.Contains(softwareName) Then 
       Else 
        programs.Add(softwareName) 
       End If 
      End If 
     End If 
    Next 

    programs.Sort() 

    Return programs 

End Function 

나는 64 비트 reg 노드를 추가하려고했지만 여전히 같은 문제가 있습니다. 왜 이런 일이 일어나는 지에 대한 통찰력을 제공 할 수 있습니까?

답변

0

하위 키를 정의하는 동안 softwareRegLoc에 "\\"를 추가해야합니다.

Dim softwareRegLoc As String = @"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall" 
관련 문제