using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HXX.Scanner.Common
{
public class RegisterHelper
{
///
/// 开机启动测试
///
///
///
public static void AutoStart(bool isAuto = true, bool showinfo = true)
{
try
{
if (isAuto == true)
{
RegistryKey R_local = Registry.CurrentUser;//RegistryKey R_local = Registry.CurrentUser;
RegistryKey R_run = R_local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
R_run.SetValue("scannerClient", Application.ExecutablePath);
R_run.Close();
R_local.Close();
}
else
{
RegistryKey R_local = Registry.CurrentUser;//RegistryKey R_local = Registry.CurrentUser;
RegistryKey R_run = R_local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
R_run.DeleteValue("scannerClient", false);
R_run.Close();
R_local.Close();
}
}
catch (Exception)
{
if (showinfo)
MessageBox.Show("您需要管理员权限修改", "提示");
}
}
public static bool GetRun()
{
//RegistryKey Key1;
//Key1 = Registry.CurrentUser;
//RegistryKey myreg1 = Key1.OpenSubKey("software\\AnencStatus");
//string status = EncodeClass.Decode_base64(myreg1.GetValue("AnencStatus").ToString(), AnencKey);
//if (status == "true")
// return true;
RegistryKey R_local = Registry.CurrentUser;//RegistryKey R_local = Registry.CurrentUser;
RegistryKey R_run = R_local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
var re=R_run.GetValue("scannerClient");
R_run.Close();
R_local.Close();
if (re == null)
{
return false;
}
return true;
}
public static RegistryKey CreateSubKey(RegDomain _domain,string name)
{
///创建基于注册表基项的节点
RegistryKey key = GetRegDomain(_domain);
// 要创建的注册表项的节点
RegistryKey sKey= IsSubKeyExist(_domain, name);
if (sKey == null)
{
sKey = key.CreateSubKey(name);
key.Close();
return sKey;
}
else
{
key.Close();
return sKey;
}
}
public static bool WriteRegeditKey(RegistryKey key,string name,string content)
{
//RegistryKey software = key.CreateSubKey(key.Name);
var software = key.OpenSubKey(key.Name, true);
software.SetValue(name, content);
key.Close();
return true;
}
protected static RegistryKey IsSubKeyExist(RegDomain _domain, string name)
{
///判断注册表项名称是否为空,如果为空,返回false
if (name == string.Empty || name == null)
{
return null;
}
///检索注册表子项
///如果sKey为null,说明没有该注册表项不存在,否则存在
RegistryKey sKey = OpenSubKey(_domain,name);
return sKey;
}
protected static RegistryKey OpenSubKey(RegDomain _domain, string name)
{
///判断注册表项名称是否为空
if (name == string.Empty || name == null)
{
return null;
}
///创建基于注册表基项的节点
RegistryKey key = GetRegDomain(_domain);
///要打开的注册表项的节点
RegistryKey sKey = null;
///打开注册表项
sKey = key.OpenSubKey(name);
///关闭对注册表项的更改
key.Close();
///返回注册表节点
return sKey;
}
protected static RegistryKey GetRegDomain(RegDomain regDomain)
{
///创建基于注册表基项的节点
RegistryKey key;
#region 判断注册表基项域
switch (regDomain)
{
case RegDomain.ClassesRoot:
key = Registry.ClassesRoot; break;
case RegDomain.CurrentUser:
key = Registry.CurrentUser; break;
case RegDomain.LocalMachine:
key = Registry.LocalMachine; break;
case RegDomain.User:
key = Registry.Users; break;
case RegDomain.CurrentConfig:
key = Registry.CurrentConfig; break;
case RegDomain.PerformanceData:
key = Registry.PerformanceData; break;
default:
key = Registry.LocalMachine; break;
}
#endregion
return key;
}
}
}