我开发了一个应用程序并将其安装在客户端计算机上。在我的应用程序中,我需要获取它的安装路径。我的应用程序在注册表项:读取C#中的注册表项#
HKEY_LOCAL_MACHINE\SOFTWARE\MyApplication\[AppPath]
如何使用C#我读AppPath
?
我开发了一个应用程序并将其安装在客户端计算机上。在我的应用程序中,我需要获取它的安装路径。我的应用程序在注册表项:读取C#中的注册表项#
HKEY_LOCAL_MACHINE\SOFTWARE\MyApplication\[AppPath]
如何使用C#我读AppPath
?
看到这个http://www.codeproject.com/Articles/3389/Read-write-and-delete-from-registry-with-C
更新时间:
您可以在Microsoft.Win32
命名空间使用RegistryKey
类。是
的RegistryKey
一些重要的功能如下:
GetValue //to get value of a key
SetValue //to set value to a key
DeleteValue //to delete value of a key
OpenSubKey //to read value of a subkey (read-only)
CreateSubKey //to create new or edit value to a subkey
DeleteSubKey //to delete a subkey
GetValueKind //to retrieve the datatype of registry key
改为使用此[link](http://www.codeproject.com/Articles/3389/Read-write-and-delete-from-registry-with-C)。 – shipr 2015-04-28 22:14:01
您正在寻找狡猾的名字Registry.GetValue
method。
string InstallPath = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MyApplication\AppPath", "Installed", null);
if (InstallPath != null)
{
// Do stuff
}
该代码应该得到你的价值。你需要成为
using Microsoft.Win32;
为了工作,虽然。
您可以使用以下方法来获取其中的注册表认为它的安装:
(string)Registry.LocalMachine.GetValue(@"SOFTWARE\MyApplication\AppPath",
"Installed", null);
或者你可以使用下面的找出应用程序实际从推出:
System.Windows.Forms.Application.StartupPath
如果您尝试使用.exe
位置作为查找相关文件的相对路径,则后者比前者更可靠。用户可以在安装后轻松移动,并且仍然可以正常工作,因为.NET应用程序不依赖于注册表。
使用StartupPath
,您甚至可以做一些巧妙的事情,例如让应用程序在运行时更新注册表项,而不是由于丢失/错误/损坏的条目而导致崩溃。
而且一定要将应用程序设置功能看作存储值而不是注册表(Properties.Settings.Default.mySettingEtc
)。您可以读取/写入应用程序的设置和/或在标准位置保存为简单MyApp.exe.config
文件的用户级别。从过去的一个不错的爆炸(良好的旧的Win 3.1/DOS的日子)让应用程序安装/删除是一个简单的复制/删除一个或两个文件夹结构,而不是一些复杂的,神秘的安装/卸载例程,留下各种垃圾在注册表中并撒满硬盘。
同样,这些可以在努力中有用:'Environment.CommandLine'和'Environment.GetCommandLineArgs()' – 2013-03-30 17:58:02
这也适用:System.AppDomain.CurrentDomain.BaseDirectory – 2013-05-17 17:58:09
使用System.Reflection:Assembly.GetExecutingAssembly() .Location将获得完整路径,然后System.IO.Path.GetDirectoryName选择父文件夹。 – 2013-05-17 18:49:49
如果您希望将其转换为特定类型,则可以使用此方法。大多数非基元类型默认情况下不支持直接投射,因此您必须相应处理这些类型。
public T GetValue<T>(string registryKeyPath, string value, T defaultValue = default(T))
{
T retVal = default(T);
retVal = (T)Registry.GetValue(registryKeyPath, value, defaultValue);
return retVal;
}
这很好。用法示例:'int loopback = GetValue
using Microsoft.Win32;
string chkRegVC = "NO";
private void checkReg_vcredist() {
string regKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (Microsoft.Win32.RegistryKey uninstallKey = Registry.LocalMachine.OpenSubKey(regKey))
{
if (uninstallKey != null)
{
string[] productKeys = uninstallKey.GetSubKeyNames();
foreach (var keyName in productKeys)
{
if (keyName == "{196BB40D-1578-3D01-B289-BEFC77A11A1E}" ||//Visual C++ 2010 Redistributable Package (x86)
keyName == "{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}" ||//Visual C++ 2010 Redistributable Package (x64)
keyName == "{C1A35166-4301-38E9-BA67-02823AD72A1B}" ||//Visual C++ 2010 Redistributable Package (ia64)
keyName == "{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}" ||//Visual C++ 2010 SP1 Redistributable Package (x86)
keyName == "{1D8E6291-B0D5-35EC-8441-6616F567A0F7}" ||//Visual C++ 2010 SP1 Redistributable Package (x64)
keyName == "{88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}" //Visual C++ 2010 SP1 Redistributable Package (ia64)
) { chkRegVC = "OK"; break; }
else { chkRegVC = "NO"; }
}
}
}
}
使用微软的术语,在你的问题中,'MyApplication'是* Key *,'AppPath'是* Value *。你问的是如何获得与AppPath相关的* data *。 – DavidRR 2016-08-16 14:19:08