实现过程:Java语言编写程序并操作注册表,通过exe4j工具将程序打包成exe,通过前端界面联动exe程序并传参。
一、使用技术
二、Java操作
2.1创建JavaSE项目
2.2导入资源
1.添加registry.jar包
2.将dll文件放入jdk/bin目录下
如果出现以下报错,说明jdk和dll文件的位数不符:
解决办法:下载64为的dll >>>
2.3创建注册表目录
public class RegisteryUtil {
static final String KEY_NAME = "aClient";
static final String EXE__PATH="C:\\Program Files (x86)\\Tencent\\WeChat\\WeChat.exe";
@SneakyThrows
public void isRegExist() {
RegistryKey subKey = Registry.HKEY_CLASSES_ROOT.createSubKey(KEY_NAME,"");
RegStringValue value = new RegStringValue(subKey, "");
value.setData("aClientProtocol");
subKey.setValue(value);
subKey.setValue(new RegStringValue(subKey, "URL Protocol", EXE__PATH));
subKey.closeKey();
RegistryKey subKey1 = Registry.HKEY_CLASSES_ROOT.createSubKey(KEY_NAME + "\\DefaultIcon", EXE__PATH);
RegStringValue value1 = new RegStringValue(subKey1, "");
value1.setData(EXE__PATH);
subKey1.setValue(value1);
subKey1.closeKey();
RegistryKey subKey2 = Registry.HKEY_CLASSES_ROOT.createSubKey(KEY_NAME + "\\shell", "");
subKey2.closeKey();
RegistryKey subKey3 = Registry.HKEY_CLASSES_ROOT.createSubKey(KEY_NAME + "\\shell\\open", "");
subKey3.closeKey();
RegistryKey subKey4 = Registry.HKEY_CLASSES_ROOT.createSubKey(KEY_NAME + "\\shell\\open\\command", "");
RegStringValue value2 = new RegStringValue(subKey4, "");
value2.setData(EXE__PATH);
subKey4.setValue(value2);
subKey4.closeKey();
}
}
运行结果:
三、exe4j打包
如果是springboot项目,选择这个:
四、前端
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ForC</title>
<meta name="language" content="zh-CN">
</head>
<body>
<a href="aClient://=参数1=参数2">打开程序</a>
</body>
</html>
因为前端给exe传参只能传递一个参数,所以需要用=号连接,后端进行解析即可。
五、注册表传参格式
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\aClient]
@="aClientProtocol"
"URL Protocol"="C:\\Program Files (x86)\\Tencent\\WeChat\\WeChat.exe"
[HKEY_CLASSES_ROOT\aClient\DefaultIcon]
@="C:\\Program Files (x86)\\Tencent\\WeChat\\WeChat.exe,1"
[HKEY_CLASSES_ROOT\aClient\shell]
@=""
[HKEY_CLASSES_ROOT\aClient\shell\open]
@=""
[HKEY_CLASSES_ROOT\aClient\shell\open\command]
@="\"C:\\Program Files (x86)\\Tencent\\WeChat\\WeChat.exe\" \"%1\""
六、错误解决
6.1依赖问题
解决方案:可以将依赖包推送至本地maven仓库>>>
6.2启动类错误
解决:
6.3启动awt错误
解决方案: