web-dev-qa-db-ja.com

SCCMによるインストール後にレジストリで検出しようとすると失敗します

これは簡単です。プログラム、exeファイルをプッシュします。 SCCM=プログラムが後でインストールされたことを知るためには、プログラムを「検出」する必要があります。これは、exeファイルであるため、手動で検出する必要があります。この例では、バージョンによってファイルが区別されないため、どのファイルも使用できません。また、異なるバージョンを区別できるようにする必要があります。

私はこれをレジストリを介してやってみました。これが私がすることです->

SCCM 2012, Screenshot, click to enlarge

インストール後にレジストリが存在することを確認しましたが、プログラムの検出に失敗しました。したがって、基本的にデプロイメントは機能しますが、このレジストリーを見ることができません。

なぜですか、パスは正しいです。私は '32'ビットのフラグとそれ以外のフラグの両方を使用してみました。

2
NoobCoder

まず、そのスクリーンショットを見て私に悲鳴を上げる大きなことが1つあります。それは、レジストリキーのパスの中央にあるWow6432Nodeというテキストです。

From MSDN:レジストリ内の32ビットおよび64ビットアプリケーションデータ

64ビットWindowsでは、レジストリエントリの一部が32ビットアプリケーションと64ビットアプリケーションで別々に格納され、レジストリリダイレクタとレジストリリフレクションを使用して別々の論理レジストリビューにマップされます。 32ビットバージョンとは異なるレジストリキーと値。

...

レジストリツリーのリダイレクトサブノードは、WOW6432Nodeという名前を使用して、WOW64コンポーネントによって自動的に作成されます。その結果、Wow6432Nodeを作成するレジストリキーに名前を付けないことが重要です。

64ビットWindowsを実行しているマシンでは、Wow6432Nodeはレジストリの一部であり、32ビットアプリケーションは(アプリが認識せずに)サイレントにリダイレクトされます。

SCCMのレジストリ検出でこのリダイレクトにアクセスする方法は、SCCMをアプリケーションが「」をチェックすることによってリダイレクトされるのと同じ方法でリダイレクトすることです。このレジストリキーはスクリーンショットの中央付近に表示される64ビットシステムの32ビットアプリケーション "ボックス、および\Wow6432Nodeの削除レジストリキーのパスの外にあります。これは、SCCMがこのレジストリキーが32ビットのレジストリセクションにあることを認識し、32または64ビットマシン。


第二に、私はあなたのアプリケーションを知りませんが、この検出を行う簡単な方法がある可能性が非常に高いです。

アプリはEXEですが、EXEがWindowsインストーラーMSIの単なるラッパーである可能性は非常に高く、非常に一般的です。この場合、「Windowsインストーラー」製品コード検出方法を非常に簡単に使用できます。

アプリを既にインストールしたテストマシンを確認するだけで、EXEのMSI製品コードを見つける方法がいくつかあります。 1つの方法は、WMIコマンドラインインターフェイスを使用して、DOSプロンプトの実行から、インストールされているアプリとそのインストーラーコードを一覧表示することです。

wmic product get Name, IdentifyingNumber

アプリが "Identifyingnumber"でそのリストに表示された場合、それをWindowsインストーラーの検出方法に含めることができるはずです。

1
GAThrawn