0

Windows マシンにインストールされているソフトウェアのレポートを作成するスクリプトを作成しようとしています。

現在、レジストリのアンインストール フォルダから情報を取得していますが、問題があります。

私は2つの多くの情報を得る

ヘルパー、ランタイム、ドライバーパックなどのソフトウェアには興味がありません。重要なのは、ライセンスが必要なソフトウェアだけです。Microsoft SQL サーバー、MS Office、Adobe Photoshop など。

それを判断するスマートな方法はありますか、それとも難しい方法で、Regular expを介してソートしますか?

現在、txt ファイルを作成する VBScript があります。次に、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 

ありがとう。

4

0 に答える 0