我需要通過程序名稱(出現在「添加或刪除程序」中的名稱)來檢查程序的安裝位置。什麼是最好的方式,以便它適用於所有語言。如何使用C#檢查程序的安裝位置
回答
看看進入註冊表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
只是遍歷所有子項和看一看到值顯示名稱和INSTALLLOCATION。在這裏你可以找到你想要的信息以及更多信息;-)
至少InstallLocation可以是一個小說的作品;例如,根據註冊表,Crystal 11的InstallLocation爲「C:\ Program Files \ Your Company Name \ Your Product Name \」。在很多情況下,它也沒有設置。 – 2009-09-22 08:06:59
您可以使用WMI類實現此目的。但前提是
- 的應用程序和必須運行
以下示例代碼要做到這一點
string queryString =
"SELECT Name, ProcessId, Caption, ExecutablePath" +
" FROM Win32_Process";
SelectQuery query = new SelectQuery(queryString);
ManagementScope scope = new System.Management.ManagementScope(@"\\.\root\CIMV2");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection processes = searcher.Get();
foreach(ManagementObject mObj in processes)
{
var name = mObj ["Name"].ToString();
var ProcessId = Convert.ToInt32(mObj ["ProcessId"]);
var Caption = mObj ["Caption"].ToString();
var Path = mObj ["ExecutablePath"].ToString();
}
MsiGetProductInfo在C#中爲我工作得很好。使用pinvoke(http://www.pinvoke.net/default.aspx/msi.msigetproductinfo)來使用該函數。 – 2012-10-01 15:09:58
如果您想避免使用PInvoke,我認爲這些信息可以通過部署工具基礎(DTF)(WiX的一部分)獲得。 http://robmensching.com/blog/posts/2008/5/16/deployment-tools-foundation-joins-the-wix-toolset – RenniePet 2013-06-24 15:39:03
要添加到Oliver的答案我已經把這個檢查包含在一個靜態方法中。
public static bool IsProgramInstalled(string programDisplayName) {
Console.WriteLine(string.Format("Checking install status of: {0}", programDisplayName));
foreach (var item in Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall").GetSubKeyNames()) {
object programName = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + item).GetValue("DisplayName");
Console.WriteLine(programName);
if (string.Equals(programName, programDisplayName)) {
Console.WriteLine("Install status: INSTALLED");
return true;
}
}
Console.WriteLine("Install status: NOT INSTALLED");
return false;
}
- 1. C++檢查已安裝的程序
- 2. 檢查程序安裝在C
- 3. 安卓應用程序安裝位置
- 4. 如何使用Aplescript檢查Adobe安裝程序的複選框?
- 5. 如何在由冰山生成的安裝程序中設置安裝檢查?
- 6. NSIS檢查安裝的應用程序
- 7. 使用Windows Visual Studio 2008 C檢查安裝程序權限#
- 8. 如何在安裝程序中使用subinacl? C#安裝項目
- 9. 如何使用IBM Spark安裝程序設置安裝路徑?
- 10. 使用Java查找Postgresql安裝位置
- 11. 有沒有辦法檢查從應用程序的安裝位置
- 12. 如何檢查已安裝的應用程序是我的?
- 13. 運行安裝程序或檢查程序是否安裝
- 14. NPM安裝:檢查特定的應用程序安裝
- 15. 查找Silverlight OOB應用程序的安裝位置
- 16. 如何以編程方式在Windows中查找安裝的應用程序的安裝位置
- 17. Python:查找註冊表以查找程序的安裝位置
- 18. 安裝新的位置提供程序
- 19. 使用RInno安裝閃亮的應用程序;選擇R安裝位置
- 20. 如何檢查應用程序的安裝日期?
- 21. 如何檢查應用程序的下載和安裝
- 22. 在C#windows應用程序中安裝應用程序之前,檢查OS是否是32位或64位
- 23. 如何檢查,如果應用程序已經安裝
- 24. 如何安裝C#應用程序?
- 25. 如何檢查用戶是否安裝了應用程序?
- 26. 如何確定使用ClickOnce安裝的不同應用程序的位置?
- 27. 檢查.NET Framework的NSIS安裝程序
- 28. 檢查WIX安裝程序中的RAM
- 29. flipkart等應用程序如何檢查設備中安裝的應用程序
- 30. 應用程序安裝位置如何工作?
???你能指出你的問題更清楚嗎?你問一個程序是基於.Net還是其他的? – Graviton 2009-09-22 06:52:05
檢查註冊表。 – RaYell 2009-09-22 06:57:14