ElectricityBusinessHall_Dig.../Assets/Resources/Scripts/Function/RegistryManager.cs

100 lines
3.0 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Microsoft.Win32;
/// <summary>
/// 注册表管理
/// </summary>
public class RegistryManager : MonoBehaviour
{
/// <summary>
/// 注册表文件名(前端通过这个KeyName调用)
/// </summary>
public string KeyName;
// Start is called before the first frame update
void Start()
{
AddRegist(KeyName);
}
// Update is called once per frame
void Update()
{
}
void AddRegist(string FileName)
{
if (FileName == "")
{
}
else
{
try
{
//程序编号
string strPrimaryKey = FileName.Trim();
RegistryKey key = Registry.ClassesRoot;
RegistryKey regKey = key.OpenSubKey(strPrimaryKey, true);
if (regKey != null) {
key.DeleteSubKeyTree(strPrimaryKey, true);
key.Close();
}
//文件项
RegistryKey regPrimaryKey = key.CreateSubKey(strPrimaryKey);
regPrimaryKey.SetValue("", strPrimaryKey + " Protocol");
regPrimaryKey.SetValue("URL Protocol", "");
//默认图标
RegistryKey regDefaultIconKey = key.CreateSubKey(strPrimaryKey + "\\DefaultIcon");
//string strExePathName = Application.StartupPath + "\\" + Application.ProductName;
string strExePathName = System.Environment.CurrentDirectory + "\\" + Application.productName;
regDefaultIconKey.SetValue("", strExePathName + ",1");
RegistryKey regshellKey = key.CreateSubKey(strPrimaryKey + "\\shell");
RegistryKey regshellopenKey = key.CreateSubKey(strPrimaryKey + "\\shell\\open");
RegistryKey regshellopencommandKey = key.CreateSubKey(strPrimaryKey + "\\shell\\open\\command");
regshellopencommandKey.SetValue("", string.Format("\"{0}\" \"%1\"", strExePathName));
key.Close();
Debug.Log("生成注册表成功!");
}
catch (Exception ex)
{
Debug.Log("生成注册表失败!"+ex.Message);
}
}
}
void DeleteRegist(string fileName) {
try
{
if (string.IsNullOrEmpty(fileName.Trim()))
{
Debug.Log( "请输入程序编号!");
return;
}
string strPrimaryKey = fileName.Trim();
RegistryKey delKey = Registry.ClassesRoot;
RegistryKey regPrimaryKey = delKey.OpenSubKey(strPrimaryKey, true);
//判断要删除的regPrimaryKey是否存在
if (regPrimaryKey != null)
{
delKey.DeleteSubKeyTree(strPrimaryKey, true);
}
delKey.Close();
Debug.Log("删除注册表成功!");
}
catch (Exception ex)
{
Debug.Log("删除注册表失败!"+ex.Message);
}
}
}