using Microsoft.Win32; // 추가 되어야 한다.
if (Reg_read(rPath, rKey) == rVal) { CheckBox1.IsChecked = true; } // <== 폼 로드 시 넣어주면 좋다.
string rPath = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run";
string rKey = "Touch-Util";
string rVal = Environment.CurrentDirectory + "\\TOUCH-UTIL(Ver2).exe";
private void CheckBox1_Checked(object sender, RoutedEventArgs e)
{
if (Reg_read(rPath, rKey) != rVal)
{
Reg_write(rPath, rKey, rVal, RegistryValueKind.String);
MessageBox.Show("시작프로그램 등록~!");
}
}
private void CheckBox1_Unchecked(object sender, RoutedEventArgs e)
{
Reg_del(rPath, rKey, rVal);
MessageBox.Show("시작프로그램 제거");
}
#region // 펑션 레지스트리 가져오기 및 쓰기
// 레지스트리 정보 가져오기
private string Reg_read(string rPath, string rKey)
{
RegistryKey reg = null;
if (rPath.StartsWith("HKEY_CLASSES_ROOT")) reg = Registry.ClassesRoot;
if (rPath.StartsWith("HKEY_CURRENT_USER")) reg = Registry.CurrentUser;
if (rPath.StartsWith("HKEY_LOCAL_MACHINE")) reg = Registry.LocalMachine;
if (rPath.StartsWith("HKEY_USERS")) reg = Registry.Users;
if (rPath.StartsWith("HKEY_CURRENT_CONFIG")) reg = Registry.CurrentConfig;
reg = reg.OpenSubKey(rPath.Substring((rPath.IndexOf("\\") + 1), rPath.Length - (rPath.IndexOf("\\") + 1)), true);
if (reg == null) return "";
else return Convert.ToString(reg.GetValue(rKey));
}
//레지스트레에 정보 쓰기
private void Reg_write(string rPath, string rKey, string rVal, RegistryValueKind rKnd) // 키, 값, 종류
{
RegistryKey reg = null;
if (rPath.StartsWith("HKEY_CLASSES_ROOT")) reg = Registry.ClassesRoot;
if (rPath.StartsWith("HKEY_CURRENT_USER")) reg = Registry.CurrentUser;
if (rPath.StartsWith("HKEY_LOCAL_MACHINE")) reg = Registry.LocalMachine;
if (rPath.StartsWith("HKEY_USERS")) reg = Registry.Users;
if (rPath.StartsWith("HKEY_CURRENT_CONFIG")) reg = Registry.CurrentConfig;
reg = reg.CreateSubKey(rPath.Substring((rPath.IndexOf("\\") + 1), rPath.Length - (rPath.IndexOf("\\") + 1)), RegistryKeyPermissionCheck.ReadWriteSubTree);
reg.SetValue(rKey, rVal, rKnd);
reg.Close();
}
private void Reg_del(string rPath, string rKey, string rVal) // 키, 값, 종류
{
RegistryKey reg = null;
if (rPath.StartsWith("HKEY_CLASSES_ROOT")) reg = Registry.ClassesRoot;
if (rPath.StartsWith("HKEY_CURRENT_USER")) reg = Registry.CurrentUser;
if (rPath.StartsWith("HKEY_LOCAL_MACHINE")) reg = Registry.LocalMachine;
if (rPath.StartsWith("HKEY_USERS")) reg = Registry.Users;
if (rPath.StartsWith("HKEY_CURRENT_CONFIG")) reg = Registry.CurrentConfig;
reg = reg.OpenSubKey(rPath.Substring((rPath.IndexOf("\\") + 1), rPath.Length - (rPath.IndexOf("\\") + 1)), true);
reg.DeleteValue(rKey);
}
#endregion