人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Windowsの「アプリケーションの追加と削除」で一覧にでてくるリストを
コマンドで表示させたいです。
そのリストをリダイレクトでファイルに落としたいです。

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

環境:Windows 2000,XP,Vista

●質問者: html1983
●カテゴリ:コンピュータ
✍キーワード:VISTA Windows Windows 2000 XP アプリケーション
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● wasisan
●10ポイント

とりあえず,


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

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

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


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

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

◎質問者からの返答

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


2 ● degucho
●35ポイント

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

◎質問者からの返答

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

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


3 ● wasisan
●10ポイント

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

追加回答です.


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

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

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


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

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

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


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

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

◎質問者からの返答

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


4 ● mj99
●35ポイント

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

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ