大家好,又见面了,我是你们的朋友全栈君。
做的项目上线了,又激动又紧张,但是之前都是在理想情况下开发的,没想到还有开机自启这个小功能,所以有完善了一下。
#region 将程序添加到启动项
private static RegistryKey HKCU = Registry.CurrentUser;
private static string name = "DBAnalyzer";
private static string path = Application.ExecutablePath;
/// <summary>
/// 注册表括操作将程序添加到启动项
/// </summary>
public static void SetRegistryKey(bool Started)
{
try
{
RegistryKey Run = HKCU.CreateSubKey(@"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\");
if (Started == true)
{
try
{
Run.SetValue(name, path);
Run.Close();
HKCU.Close();
//this.SaveLog("注册表修改成功");
LogHelper.Info("注册表修改成功");
}
catch (Exception ex)
{
//this.SaveLog("注册表修改错误(开机自启未实现)!错误描述为:" + ex.Message.ToString());
LogHelper.Info("注册表修改错误(开机自启未实现)!错误描述为:" + ex.Message.ToString());
}
}
else
{
if (Run.GetValue(name) != null)
{
Run.DeleteValue(name);
Run.Close();
HKCU.Close();
}
else
return;
}
}
catch (Exception ex)
{
//this.SaveLog("将程序添加到启动项错误!错误描述为:" + ex.Message.ToString());
LogHelper.Info("将程序添加到启动项错误!错误描述为:" + ex.Message.ToString());
}
}
/// <summary>
/// 获取是否开机启动
/// </summary>
/// <returns></returns>
public static bool IsRegeditExit()
{
try
{
RegistryKey software = HKCU.OpenSubKey("SOFTWARE", true);
RegistryKey aimdir = software.OpenSubKey(@"Microsoft\Windows\CurrentVersion\Run\", true);
object runObj = aimdir.GetValue(name);
if (runObj == null || !path.Equals(runObj.ToString()))
return false;
else
return true;
}
catch (Exception ex)
{
//this.SaveLog("获取是否开机启动错误!错误描述为:" + ex.Message.ToString());
LogHelper.Info("获取是否开机启动错误!错误描述为:" + ex.Message.ToString());
}
return false;
}
#endregion
客户端调用:
if (!IsRegeditExit())
{
//添加开机启动
SetRegistryKey(true);
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105676.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...