コマンドで表示させたいです。
そのリストをリダイレクトでファイルに落としたいです。
方法ありましたら教えてください。
環境:Windows 2000,XP,Vista
とりあえず,
コントロールパネルについて:
http://www7a.biglobe.ne.jp/~lshen/EternalWindows/Special/Control...
safarp:
http://www.forest.impress.co.jp/lib/arc/extract/instsupt/safarp....
とそのソースコード:
http://nchc.dl.sourceforge.net/sourceforge/wistinga/safarp-0.5.s...
をあげておきます.私もまだ詳しい方法は分かっていませんので.
safarpには情報をCSVファイルとして保存する機能があるので,
シェルからダイレクトに使うのでないのならこれでいいとおもいます.
ダイレクトにインストール情報にアクセスする方法はおそらく
ソースコードに書いてあるのでこれを解析してみては?
http://support.microsoft.com/kb/247501/ja
と
http://www.atmarkit.co.jp/fwin2k/win2ktips/391cmdreg/cmdreg.html
を組み合わせてみたらとりあえずそれっぽい結果が取れました。
[list.bat]
set file1="C:\uninstall.reg"
set file2="C:\temp.txt"
set file3="C:\result.txt"
reg export HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall %file1% /y
find "DisplayName" %file1% > %file2%
sort %file2% /o %file3%
del %file1%
del %file2%
でファイルに落とせますが、下の「ParentDisplayName」は無視してください。
あと、上記はVista用で、XPではregの/yスイッチは不要みたいです。
2000は試せてません・・・
お手軽な方法のご紹介ありがとうございます。
これでやりたいことができそうです。
すみません,よく分かっていないまま回答してしまいましたので
追加回答です.
まず,先の回答の最初のコントロールパネルについてのリンクは
質問と無関係な内容でした.無視してください.
そして,sfarpコードもC言語で実装する場合の方法でした.
結局,2番の回答者のようにDOSシェルコマンドregを使うか,
もしくは,次のリンクの情報のようにスクリプトで書くという
方法を回答すべきだったですね.申し訳ございませんでした.
インストール情報を取得する:
http://maglog.jp/pueblo-del-script/index.php?module=Article&...
あのリストはレジストリにあるのですね。ありがとうございます。
回答2と仕組みは一緒なんですが、、、
とりあえず、下記の方法で「アプリケーションの追加と削除」の一覧と一致するリストを出力できます。
下記ソースをhoge.vbsなどに保存して、コマンドプロンプトで
cscript /nologo hoge.vbs > hoge.txt
と、実行してください。
----
以下、ソース
Option Explicit Const HKEY_LOCAL_MACHINE = &H80000002 Dim objRegProv, ccSubKeys Dim strComputer, sytKey, strSubKey, dwVal Dim strDisplayName, strParentKeyName, dwSystemComponent strComputer = "." Set objRegProv = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") sytKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" Call objRegProv.EnumKey(HKEY_LOCAL_MACHINE, sytKey, ccSubKeys) For each strSubKey in ccSubKeys dwVal = objRegProv.GetStringValue(HKEY_LOCAL_MACHINE, sytKey & "\" & strSubKey, "ParentKeyName", strParentKeyName) If dwVal <> 0 Then ' ParentKeyNameが無いものが対象(更新インストールではないもの) dwVal = objRegProv.GetDWORDValue(HKEY_LOCAL_MACHINE, sytKey & "\" & strSubKey, "SystemComponent", dwSystemComponent) If dwVal <> 0 Or dwSystemComponent = 0 Then ' システムフラグが無いまたはゼロのものが対象 dwVal = objRegProv.GetStringValue(HKEY_LOCAL_MACHINE, sytKey & "\" & strSubKey, "DisplayName", strDisplayName) If dwVal = 0 And strDisplayName <> "" Then ' 表示名があるものが対象 WScript.Echo strDisplayName End If End If End If Next
具体的なコードありがとうございます。
これでもできそうですね!
コードの解析ですか、ちょっと私には座敷が高いですね。。。