Windowsの「アプリケーションの追加と削除」で一覧にでてくるリストを

コマンドで表示させたいです。
そのリストをリダイレクトでファイルに落としたいです。

方法ありましたら教えてください。

環境:Windows 2000,XP,Vista

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2007/08/02 12:38:50
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:wasisan No.1

回答回数86ベストアンサー獲得回数7

ポイント10pt

とりあえず,


コントロールパネルについて:

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ファイルとして保存する機能があるので,

シェルからダイレクトに使うのでないのならこれでいいとおもいます.


ダイレクトにインストール情報にアクセスする方法はおそらく

ソースコードに書いてあるのでこれを解析してみては?

id:html1983

コードの解析ですか、ちょっと私には座敷が高いですね。。。

2007/08/02 12:33:38
id:degucho No.2

回答回数281ベストアンサー獲得回数75

ポイント35pt

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は試せてません・・・

id:html1983

お手軽な方法のご紹介ありがとうございます。

これでやりたいことができそうです。

2007/08/02 12:34:06
id:wasisan No.3

回答回数86ベストアンサー獲得回数7

ポイント10pt

すみません,よく分かっていないまま回答してしまいましたので

追加回答です.


まず,先の回答の最初のコントロールパネルについてのリンクは

質問と無関係な内容でした.無視してください.

そして,sfarpコードもC言語で実装する場合の方法でした.


結局,2番の回答者のようにDOSシェルコマンドregを使うか,

もしくは,次のリンクの情報のようにスクリプトで書くという

方法を回答すべきだったですね.申し訳ございませんでした.


インストール情報を取得する:

http://maglog.jp/pueblo-del-script/index.php?module=Article&...

id:html1983

あのリストはレジストリにあるのですね。ありがとうございます。

2007/08/02 12:34:40
id:mj99 No.4

回答回数138ベストアンサー獲得回数38

ポイント35pt

回答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

http://dmyoh.exblog.jp/1446060

id:html1983

具体的なコードありがとうございます。

これでもできそうですね!

2007/08/02 12:35:57

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません