[Win/VBA]インストールしたアプリケーションを確認する方法
レジストリを見てインストールアプリケーションを確認してはダメ
Windowsにインストールしたアプリケーションは、管理者権限でインストールし全てのユーザが使用できるものの他、特定のユーザだけが利用できるものがあります。
よくサンプルコードなどで、Windowsでインストールしたアプリケーションの一覧をレジストリから得るものがありますが、多くの場合レジストリとして
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\
のみを見て、インストールしたアプリケーションが得られるとしたものが多い印象があります。
しかし、このレジストリーには管理者権限で導入した一部のアプケーションのみが格納されているだけで、特定ユーザ向けにインストールしたものは格納されず、これを信じて実装するのは間違いです。
特定ユーザのみにインストールしたアプリケーションは、次のレジストリ
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
に格納されており、少なくともこの2つのレジストリを見ないとすべてのインストールアプリケーションを確認することは出来ません。
会社のアプリケーションも上記1つしか確認しておらず、指摘が受け入れられるのに何か月もかかりました。勘弁してほしいわぁ・・
PS.そのほかにWOWなんちゃらという場所にもあるっぽい。なんじゃそりゃ。
SlenimBasicがインストールされているかどうかを確認するには
インストールソフトウェアの一覧を取得するには、レジストリーは使わないほうがよさげです。
以下はSelenium Basicがインストールされたかどうかを確認する実装例です。
'Selenium_Basicの有無
Dim seleniumBasicExisted As Boolean
seleniumBasicExisted = False
'Selenium_Basicの有無確認
Dim itm As Variant
With CreateObject("Shell.Application").Namespace("shell:::{7b81be6a-ce2b-4676-a29e-eb907a5126c5}")
For Each itm In .Items
If itm.name = "Selenium Basic" Then
seleniumBasicExisted = True
Exit For
End If
Next
End With
この記事が気に入ったらサポートをしてみませんか?