找某軟體是否已安裝
以下為完整範例
*Clickonce安裝位置
利用clickonce安裝的軟體不會在LocalMachine下的Software
而會是在CurrentUser的Microsoft\Windows\CurrentVersion\Uninstall下
- 先取得軟體安裝路徑
可利用regedit.exe,到LocalMachine下的Software查軟體安裝註冊表
比如說要查Prolific Technology INC 公司的 PL-2303 USB-to-Serial
得知路徑為
string path = "Prolific Technology INC\PL-2303 USB-to-Serial";
- 程式寫法
程式的話,就可以透過Microsoft.Win32.Registry 達成
比如說要查Prolific Technology INC 公司的 PL-2303 USB-to-Serial
在程式註冊表中會在SOFTWARE資料夾中Prolific Technology下找到PL-2303 USB-to-Serial
如果可以找到代表有安裝,所以程式可寫成
regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE", true).OpenSubKey(@"SOFTWARE下的路徑", true);
以下為完整範例
//先引用Microsoft.Win32 using Microsoft.Win32; public bool findSoftwareInstalled() { try { //找PL-2303 USB-to-Serial 是否安裝 string path = "Prolific Technology INC\PL-2303 USB-to-Serial"; RegistryKey regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE", true).OpenSubKey(@path , true); if (regkey == null) { //"註冊表內無儲存安裝訊息"; return false; } else { //已安裝,可利用regkey.GetValue("xxx").ToString(); 取得相關資訊 return true; } } catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); return false; } }
*Clickonce安裝位置
利用clickonce安裝的軟體不會在LocalMachine下的Software
而會是在CurrentUser的Microsoft\Windows\CurrentVersion\Uninstall下
2 則留言:
看到這篇文章幫了大忙!
正愁不知道在c#中該怎麼偵測是否安裝某軟體.......
非常感謝!
另外如果"//查Prolific Technology INC\PL-2303 USB-to-Serial"這註解可以詳細點就更好了,我還稍微猜了一下才知道......(雖然也可能是我反應太慢XD)
ex: //比如說要查Prolific Technology INC公司的PL-2303 USB-to-Serial,在程式註冊表中會在SOFTWARE資料夾中Prolific Technology下找到PL-2303 USB-to-Serial,如果可以找到代表有安裝
所以程式可寫成
regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE", true).OpenSubKey(@"SOFTWARE下的路徑", true);
的確是不清楚,自己回來看都不是很懂...
重新整理內容,就照你的方法寫 = =+
感謝你的建議...
張貼留言