2

監査プロジェクトに取り組んでいるときに、ソフトウェアとライセンスに関するさまざまな問題に遭遇しました。私のプロジェクトはPerlを使用するLinuxで実行され、SNMPとWMIの両方を介してリモートマシンソフトウェアを正常に再試行しました。大きな問題は、2つのプロトコルがまったく異なる結果を返すことです。たとえば、一方がプログラムを見つけ、もう一方が見つからない場合があり、その逆もあります。

SNMPが、関連するアンインストールキーがオンになっているソフトウェアを取得することを知っています(間違っている場合は修正してください)。

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall

しかし、Win32_Productはどうですか?これは、ドキュメントに記載されている内容です。

Win32_Product WMIクラスは、Windowsインストーラーによってインストールされる製品を表します。製品は通常、1つのインストールパッケージに関連しています。

どういう意味ですか?そして、最後になりましたが、インストールされたソフトウェアの取得方法を改善する方法はありますか?つまり、インストールしたソフトウェアをコントロールパネルから見て、SNMPとWMIの結果に直面すると、奇妙なことがたくさんあります。

編集:簡単な更新で、多くのコンピューターにインストールした.NET C#でいくつかのプログラムを開発しました。残念ながら、WMIとSNMPのどちらもそれらを見つけられません。これらのプログラムは、通常のVisualStudioで生成されたセットアップでインストールしました。ヒントはありますか?

4

1 に答える 1

3

人々は基本的にWMIを使用してさまざまなシステムパラメータを照会します。WMIは、活用できる多くのインターフェイスを公開しています。これは主にVBScriptで使用されますが、C ++ / COMまたはC#を使用して操作することもできます。このウィキペディアの記事では、WMIについて詳細に説明しているので、Win32_Productクラスの機能を理解できます。これはもう1つの優れた記事であり、WMIを使い始めた人にとっては必読です。

また、これらの記事を必ず読んでください。

クラスの取得

インスタンスの取得

インスタンスの一部を取得する

修飾子へのアクセス

これらの記事は、WMIの概念をよく理解するのに役立ちます。

Windowsインストーラに関する限り:

Windowsインストーラーは、サーバークライアントアーキテクチャに基づいています。Windowsインストーラは、実際にはWindowsサービスです。Windowsインストーラーがサポートするさまざまな機能により、Windowsインストーラーはアプリケーションライフサイクル管理の最も標準的な方法になっています。拡張子が.msiのBasicMSI(Basicはありません)パッケージは、アプリのパッケージ化と配布に使用されます。

基本的なMSIパッケージは、基本的にデータベースです。アプリケーションバイナリやその他のものは、CABファイルとしてパッケージ化され、MSIパッケージに含まれる場合と、MSIパッケージの外部に存在する場合があります。

これは、TRANSACTIONALインストール方法として知られています。アプリケーションパッケージ開発者は、データベース内のさまざまなテーブルに入力するだけで、Windowsインストーラエンジンが他のすべてを処理します。これは簡単に思えるか、聞こえるかもしれませんが、非常に難しく、多くの知識が必要です。

アプリケーションが任意のシステムにインストールされると、Windowsインストーラーは、システムにインストールされているすべてのリソースを適切に管理するために必要なすべてのレジストリキーを書き込みます。アプリケーションのライフサイクルはWindowsインストーラーによって管理されるため、以下を簡単にサポートできます。

1)修理

2)レジリエンス

これらすべてを実行すると、ケースに関係するすべての関係者についてより良いアイデアが得られる可能性があります。そうすれば、あなたはより明確な質問をするでしょう(またはそうでないかもしれません!)、そして私たちはあなたをより良く助けることができます(またはあなたはそれをまったく必要としないかもしれません!)。

于 2012-06-14T06:38:29.290 に答える