Browse Source

RegistryHelper:修正设置开机启动项的辅助方法。

master
王厅 1 day ago
parent
commit
c5c71736a9
  1. 26
      Apewer.Windows/Internals/RegistryHelper.cs
  2. 4
      Apewer.Windows/WindowsUtility.cs

26
Apewer.Windows/Internals/RegHelper.cs → Apewer.Windows/Internals/RegistryHelper.cs

@ -7,7 +7,7 @@ namespace Apewer.Internals
{
/// <summary>注册表。</summary>
static class RegHelper
static class RegistryHelper
{
/// <summary>用户登录后的启动项。</summary>
@ -21,12 +21,12 @@ namespace Apewer.Internals
/// <remarks>系统信息,对所有用户生效,设置需要管理员权限。</remarks>
public static RegistryKey LocalMachine { get => Registry.LocalMachine; }
/// <summary>获取字符串。</summary>
/// <summary>获取。</summary>
/// <param name="root">注册表存储区。</param>
/// <param name="key">路径。</param>
/// <param name="name">名称。</param>
/// <returns>字符串的值。获取失败时返回 NULL 值。</returns>
public static string Get(RegistryKey root, string key, string name)
/// <returns>值。获取失败时返回 NULL 值。</returns>
public static object Get(RegistryKey root, string key, string name)
{
try
{
@ -34,18 +34,24 @@ namespace Apewer.Internals
using
#endif
var rkey = root.OpenSubKey(key, RegistryKeyPermissionCheck.ReadSubTree);
var names = rkey.GetSubKeyNames();
var names = rkey.GetValueNames();
if (names.Contains(name))
{
var obj = rkey.GetValue(name, null);
var str = obj as string;
return str;
var value = rkey.GetValue(name, null);
return value;
}
}
catch { }
return null;
}
/// <summary>获取字符串。</summary>
/// <param name="root">注册表存储区。</param>
/// <param name="key">路径。</param>
/// <param name="name">名称。</param>
/// <returns>字符串的值。获取失败时返回 NULL 值。</returns>
public static string GetString(RegistryKey root, string key, string name) => Get(root, key, name) as string;
/// <summary>设置字符串,指定 value 为 NULL 可删除该值。</summary>
/// <param name="root">注册表存储区。</param>
/// <param name="key">路径。</param>
@ -75,7 +81,7 @@ namespace Apewer.Internals
/// <remarks>错误消息。</remarks>
public static void SetRun(string name, string command)
{
var old = Get(CurrentUser, Run, name);
var old = GetString(CurrentUser, Run, name);
if (old.IsEmpty()) Set(CurrentUser, Run, name, command);
}
@ -93,7 +99,7 @@ namespace Apewer.Internals
{
var path = Application.ExecutablePath;
var name = Path.GetFileNameWithoutExtension(path);
var value = Get(CurrentUser, Run, name);
var value = GetString(CurrentUser, Run, name);
return value == path;
}
set

4
Apewer.Windows/WindowsUtility.cs

@ -991,11 +991,11 @@ namespace Apewer
/// <summary>设置当前用户的启动项。</summary>
/// <param name="name">启动项的名称。</param>
/// <param name="command">执行的命令。</param>
public static void SetRun(string name, string command) => RegHelper.SetRun(name, command);
public static void SetRun(string name, string command) => RegistryHelper.SetRun(name, command);
/// <summary>取消当前用户的启动项。</summary>
/// <param name="name">启动项的名称。</param>
public static void CancelRun(string name) => RegHelper.CancelRun(name);
public static void CancelRun(string name) => RegistryHelper.CancelRun(name);
#endregion

Loading…
Cancel
Save