我正在創建一個WPF實用程序,它需要訪問本地計算機的註冊表,然後找出程序的安裝路徑。從註冊表中檢索文件安裝路徑
我已經導航到通過Regedit的鍵,它給出了一個名稱,類型和數據,它顯示了數據中的安裝路徑,我想提取安裝路徑。
我知道我需要定位到註冊表中的此項:
HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows \ CurrentVersion \ App路徑\
那麼我就需要這個鍵與內訪問文件夾有關安裝路徑的信息。
-
我正在創建一個WPF實用程序,它需要訪問本地計算機的註冊表,然後找出程序的安裝路徑。從註冊表中檢索文件安裝路徑
我已經導航到通過Regedit的鍵,它給出了一個名稱,類型和數據,它顯示了數據中的安裝路徑,我想提取安裝路徑。
我知道我需要定位到註冊表中的此項:
HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows \ CurrentVersion \ App路徑\
那麼我就需要這個鍵與內訪問文件夾有關安裝路徑的信息。
-
我解決了我的問題,對於任何想要未來解決方案的人來說,如果您在此之後仍然卡住,請給我發消息,我發現很難找到資源。
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\App Paths\myexe.exe");
string regFilePath = null;
object objRegisteredValue = key.GetValue("");
registeredFilePath = value.ToString();
感謝您的有用答案。 'key'應該被釋放以釋放與一個開放的RegistryKey相關的系統句柄。你可以在'using'語句中使用'key'。 – Ron 2016-12-07 18:42:22
要讀取你應該使用Microsot.Windows.RegistryKey class,類Registry可以爲你打開的RegistryKey註冊表項。
這個問題對我很有幫助。我想出了一個幫手類,想要玩新的元組。
實例:
public string SkypeExePath => InstalledApplicationPaths.GetInstalledApplicationPath("lync.exe");
類:
public static class InstalledApplicationPaths
{
public static string GetInstalledApplicationPath(string shortName)
{
var path = GetInstalledApplicationPaths().SingleOrDefault(x => x?.ExectuableName.ToLower() == shortName.ToLower())?.Path;
return path;
}
public static IEnumerable<(string ExectuableName, string Path)?> GetInstalledApplicationPaths()
{
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\App Paths"))
{
foreach (var subkeyName in key.GetSubKeyNames())
{
using (RegistryKey subkey = key.OpenSubKey(subkeyName))
{
yield return (subkeyName, subkey.GetValue("")?.ToString());
}
}
}
}
}
我只想讀出的鍵,然後提取的特定程序的安裝路徑。 – LouisColeman 2012-08-17 15:47:56
當您想出答案時,請將其作爲一個答案發布,而不是編輯原始問題。 =) – 2012-08-20 13:12:16
在大多數情況下訪問註冊表是不鼓勵的,大部分你需要的可以在應用程序和環境類中找到,https://msdn.microsoft.com/en-us/library/system.windows.application(v = vs.110).aspx https://msdn.microsoft.com/en-us/library/system.environment(v=vs.110).aspx或使用配置文件 – MikeT 2016-11-24 12:07:29