如何初始化 RegistryKey 变量
How to initialize RegistryKey variable
我有一个接收这种变量的函数 (OpenSubKeySymLink
):this RegistryKey key
。
我不知道如何初始化它并将它传递给函数。
public static RegistryKey OpenSubKeySymLink(this RegistryKey key, string name, RegistryRights rights = RegistryRights.ReadKey, RegistryView view = 0)
{
var error = RegOpenKeyExW(key.Handle, name, REG_OPTION_OPEN_LINK, ((int)rights) | ((int)view), out var subKey);
if (error != 0)
{
subKey.Dispose();
throw new Win32Exception(error);
}
return RegistryKey.FromHandle(subKey); // RegistryKey will dispose subKey
}
static void Main(string[] args)
{
RegistryKey key; // how to initialize it?
OpenSubKeySymLink(key, @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\myKey", RegistryRights.ReadKey, 0);
}
抱歉,我没有在 中完整解释如何使用此代码。
我把它写成一个扩展,所以你可以在现有的子键上调用它,或者在主键之一上调用它,例如 Registry.CurrentUser
.
您可以像这样使用它,例如:
using (var key = Registry.CurrentUser.OpenSubKeySymLink(@"SOFTWARE\Microsoft\myKey", RegistryRights.ReadKey))
{
// do stuff with key
}
您显然仍然可以将其用作非扩展功能
using (var key = OpenSubKeySymLink(Registry.CurrentUser, @"SOFTWARE\Microsoft\myKey", RegistryRights.ReadKey))
{
// do stuff with key
}
- 注意可选参数,这意味着一些参数不需要传递,因为它们有默认值。
- 注意在返回的
key
上使用 using
,以便正确处理它。
我有一个接收这种变量的函数 (OpenSubKeySymLink
):this RegistryKey key
。
我不知道如何初始化它并将它传递给函数。
public static RegistryKey OpenSubKeySymLink(this RegistryKey key, string name, RegistryRights rights = RegistryRights.ReadKey, RegistryView view = 0)
{
var error = RegOpenKeyExW(key.Handle, name, REG_OPTION_OPEN_LINK, ((int)rights) | ((int)view), out var subKey);
if (error != 0)
{
subKey.Dispose();
throw new Win32Exception(error);
}
return RegistryKey.FromHandle(subKey); // RegistryKey will dispose subKey
}
static void Main(string[] args)
{
RegistryKey key; // how to initialize it?
OpenSubKeySymLink(key, @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\myKey", RegistryRights.ReadKey, 0);
}
抱歉,我没有在
我把它写成一个扩展,所以你可以在现有的子键上调用它,或者在主键之一上调用它,例如 Registry.CurrentUser
.
您可以像这样使用它,例如:
using (var key = Registry.CurrentUser.OpenSubKeySymLink(@"SOFTWARE\Microsoft\myKey", RegistryRights.ReadKey))
{
// do stuff with key
}
您显然仍然可以将其用作非扩展功能
using (var key = OpenSubKeySymLink(Registry.CurrentUser, @"SOFTWARE\Microsoft\myKey", RegistryRights.ReadKey))
{
// do stuff with key
}
- 注意可选参数,这意味着一些参数不需要传递,因为它们有默认值。
- 注意在返回的
key
上使用using
,以便正确处理它。