时间:2021-07-01 10:21:17 帮助过:3人阅读
下面是SysEnvironment 类的代码,读取设置注册表的信息 代码已经封装好了,就不介绍了
(环境变量的注册表位置为HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001 / Session Manager/Environment )
using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; namespace CustomAction { class SysEnvironment { /// <summary> /// 获取系统环境变量 /// </summary> /// <param name="name"></param> /// <returns></returns> public static string GetSysEnvironmentByName(string name) { string result = string.Empty; try { result = OpenSysEnvironment().GetValue(name).ToString();//读取 } catch (Exception) { return string.Empty; } return result; } /// <summary> /// 打开系统环境变量注册表 /// </summary> /// <returns>RegistryKey</returns> private static RegistryKey OpenSysEnvironment() { RegistryKey regLocalMachine = Registry.LocalMachine; RegistryKey regSYSTEM = regLocalMachine.OpenSubKey("SYSTEM", true);//打开HKEY_LOCAL_MACHINE下的SYSTEM RegistryKey regControlSet001 = regSYSTEM.OpenSubKey("ControlSet001", true);//打开ControlSet001 RegistryKey regControl = regControlSet001.OpenSubKey("Control", true);//打开Control RegistryKey regManager = regControl.OpenSubKey("Session Manager", true);//打开Control RegistryKey regEnvironment = regManager.OpenSubKey("Environment", true); return regEnvironment; } /// <summary> /// 设置系统环境变量 /// </summary> /// <param name="name">变量名</param> /// <param name="strValue">值</param> public static void SetSysEnvironment(string name, string strValue) { OpenSysEnvironment().SetValue(name, strValue); } /// <summary> /// 检测系统环境变量是否存在 /// </summary> /// <param name="name"></param> /// <returns></returns> public bool CheckSysEnvironmentExist(string name) { if (!string.IsNullOrEmpty(GetSysEnvironmentByName(name))) return true; else return false; } /// <summary> /// 添加到PATH环境变量(会检测路径是否存在,存在就不重复) /// </summary> /// <param name="strPath"></param> public static void SetPath(string strHome) { string pathlist = GetSysEnvironmentByName("PATH"); string[] list = pathlist.Split(‘;‘); bool isPathExist = false; foreach (string item in list) { if (item == strHome) isPathExist = true; } if (!isPathExist) { SetSysEnvironment("PATH", pathlist +strHome+ ";"); } } } }
好了,接下来创建Ini文件操作类,调用了系统api,已经封装好了,可以直接用了
using System; using System.IO; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace CustomAction { public class IniFile { private string m_iniFileFullPath; /// <summary> /// ini文件路径 /// </summary> /// <param name="iniFilePath"></param> public IniFile(string iniFilePath) { m_iniFileFullPath = iniFilePath; } /// <summary> /// 写入信息 /// </summary> /// <param name="iniSection"></param> /// <param name="iniKey"></param> /// <param name="iniValue"></param> public void Write(string iniSection, string iniKey, string iniValue) { WritePrivateProfileString(iniSection, iniKey, iniValue, this.m_iniFileFullPath); } /// <summary> /// 读取信息 /// </summary> /// <param name="iniSection"></param> /// <param name="iniKey"></param> /// <returns></returns> public string Read(string iniSection, string iniKey) { StringBuilder resultValue = new StringBuilder(255); int i = GetPrivateProfileString(iniSection, iniKey, "", resultValue, 255, this.m_iniFileFullPath); return resultValue.ToString(); } /// <summary> /// 写入信息 /// </summary> /// <param name="iniSection"></param> /// <param name="iniKey"></param> /// <param name="iniValue"></param> /// <param name="iniPath"></param> public void Write(string iniSection, string iniKey, string iniValue, string iniPath) { WritePrivateProfileString(iniSection, iniKey, iniValue, iniPath); } /// <summary> /// 读取信息 /// </summary> /// <param name="iniSection"></param> /// <param name="iniKey"></param> /// <param name="iniPath"></param> /// <returns></returns> public static string Read(string iniSection, string iniKey, string iniPath) { StringBuilder resultValue = new StringBuilder(255); int i = GetPrivateProfileString(iniSection, iniKey, "", resultValue, 255, iniPath); return resultValue.ToString(); } [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); } }
现在基本代码已经写好了,右键解决方案,添加安装部署项目,右键项目文件视图,新建文件夹Mysql、Java、Tomcat,将你的拷贝的Mysql贴进Mysql项目里面
接下来,右键应用程序文件夹添加主输出
然后右键项目,自定义操作视图,添加安装和卸载的操作(选中主输出)
好了,现在可以测试下了Mysql,未完待续。。。。。。。
下次接着写Tomcat
C# 制作Java +Mysql+Tomcat 环境安装程序,一键式安装
标签: