C# Windows注册表和安装的软件
我正在尝试制作一个脚本,它将给我一个Windows机器上安装的软件的报告 现在我正在从注册表卸载文件夹中提取信息,但出现了一个问题 我得到了两条信息 我对helpers、runtime、driverpack等软件不感兴趣。唯一重要的是可能需要许可证的软件,如Microsoft SQL server、MS Office、Adobe Photoshop等 是否有一种聪明的方法来确定这一点,还是很难通过常规exp进行排序 现在我有一个VBScript,它创建了一个txt文件。然后我用C来分类C# Windows注册表和安装的软件,c#,regex,vbscript,registry,sam,C#,Regex,Vbscript,Registry,Sam,我正在尝试制作一个脚本,它将给我一个Windows机器上安装的软件的报告 现在我正在从注册表卸载文件夹中提取信息,但出现了一个问题 我得到了两条信息 我对helpers、runtime、driverpack等软件不感兴趣。唯一重要的是可能需要许可证的软件,如Microsoft SQL server、MS Office、Adobe Photoshop等 是否有一种聪明的方法来确定这一点,还是很难通过常规exp进行排序 现在我有一个VBScript,它创建了一个txt文件。然后我用C来分类 on e
on error resume next
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile("C:\Users\a-frkjer\Desktop\" & strcomputer & ".txt", True)
strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
strEntry1a = "DisplayName"
strEntry1b = "QuietDisplayName"
strEntry1c = "Publisher"
Set objReg = GetObject("winmgmts://" & strComputer & _
"/root/default:StdRegProv")
objReg.EnumKey HKLM, strKey, arrSubkeys
objTextFile.WriteLine ".::SECTION"
For Each strSubkey In arrSubkeys
intRet1 = objReg.GetStringValue(HKLM, strKey & strSubkey, _
strEntry1a, strValue1)
intRet1c = objReg.GetStringValue(HKLM, strKey & strSubkey, _
strEntry1c, strValue1c)
If intRet1 <> 0 Then
objReg.GetStringValue HKLM, strKey & strSubkey, _
strEntry1b, strValue1
End If
If strValue1 <> "" Then
objTextFile.WriteLine strValue1c & " " & strValue1 & " ¿ " & strcomputer & "¿"
End If
Next
strKey2 = "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\"
strEntry2a = "DisplayName"
strEntry2b = "QuietDisplayName"
strEntry2c = "Publisher"
Set objReg = GetObject("winmgmts://" & strComputer & _
"/root/default:StdRegProv")
objReg.EnumKey HKLM, strKey2, arrSubkeys
objTextFile.WriteLine ".::SECTION"
For Each strSubkey In arrSubkeys
intRet2 = objReg.GetStringValue(HKLM, strKey2 & strSubkey, _
strEntry2a, strValue2)
intRet2c = objReg.GetStringValue(HKLM, strKey2 & strSubkey, _
strEntry2c, strValue2c)
If intRet2 <> 0 Then
objReg.GetStringValue HKLM, strKey2 & strSubkey, _
strEntry2b, strValue2
End If
If strValue2 <> "" Then
objTextFile.WriteLine strValue2c & " " & strValue2 & " ¿ " & strcomputer & "¿"
End If
Next
objTextFile.Close
谢谢。忽略SystemComponent=1的键我没有看到任何名为SystemComponent的键在{guid}的键中输入值