Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows注册表和安装的软件_C#_Regex_Vbscript_Registry_Sam - Fatal编程技术网

C# Windows注册表和安装的软件

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

我正在尝试制作一个脚本,它将给我一个Windows机器上安装的软件的报告

现在我正在从注册表卸载文件夹中提取信息,但出现了一个问题

我得到了两条信息

我对helpers、runtime、driverpack等软件不感兴趣。唯一重要的是可能需要许可证的软件,如Microsoft SQL server、MS Office、Adobe Photoshop等

是否有一种聪明的方法来确定这一点,还是很难通过常规exp进行排序

现在我有一个VBScript,它创建了一个txt文件。然后我用C来分类

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}的键中输入值