递归火山软件开发平台

标题: 写入控制板卸载列表 开源 [打印本页]

作者: ゞ情非得已Sky    时间: 2023-11-11 22:19
标题: 写入控制板卸载列表 开源
有一个疑问   不知道为什么  版本号  跟文件大小没生效   可能系统问题


(, 下载次数: 18)
<火山程序 类型 = "通常" 版本 = 1 />

方法 写入控制板卸载列表 <类型 = 整数 注释 = "将卸载程序写入到 控制面板  卸载列表" 返回值注释 = "0 成功  1失败" 折叠 @禁止流程检查 = 真>
参数 程序名 <类型 = 文本型 注释 = "要显示的程序名称">
参数 发布者 <类型 = 文本型 注释 = "个人或**名">
参数 版本号 <类型 = 文本型 注释 = "程序版本">
参数 文件大小 <类型 = 文本型 注释 = "程序大小">
参数 卸载程序路径 <类型 = 文本型 注释 = "程序路径">
{
    变量 错误代码 <类型 = 长整数>
    卸载程序路径 = 卸载程序路径 + " /uninstall"
    @ HKEY hKey;
    @ LONG result;
    @ result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall", 0, KEY_ALL_ACCESS, &hKey);
    @ if (result != ERROR_SUCCESS) {
    @ @<错误代码>=result;
    @ return 1;
    @ }
    @ HKEY hSubKey;
    @ DWORD disposition;
    @ result = RegCreateKeyEx(hKey, @<程序名>.GetText (), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, &disposition);
    @ if (result != ERROR_SUCCESS) {
    @ @<错误代码> =result;
    @ RegCloseKey(hKey);
    @ return 1;
    @ }
    @ result = RegSetValueEx(hSubKey,L"DisplayName", 0, REG_SZ, (BYTE*)@<程序名>.GetText (), static_cast<DWORD>(@<程序名>.GetLength() + 1) * sizeof (TCHAR));
    @ if (result != ERROR_SUCCESS) {
    @ @<错误代码>=result;
    @ RegCloseKey(hSubKey);
    @ RegCloseKey(hKey);
    @ return 1;
    @ }
    @ result = RegSetValueEx(hSubKey, L"Publisher", 0, REG_SZ, (BYTE*)@<发布者>.GetText(), static_cast<DWORD>(@<发布者>.GetLength() + 1) * sizeof (TCHAR));
    @ if (result != ERROR_SUCCESS) {
    @ @<错误代码> =result;
    @ RegCloseKey(hSubKey);
    @ RegCloseKey(hKey);
    @ return 1;
    @ }
    @ result = RegSetValueEx(hSubKey, L"Size", 0, REG_SZ, (BYTE*)@<文件大小>.GetText(), static_cast<DWORD>(@<文件大小>.GetLength() + 1) * sizeof (TCHAR));
    @ if (result != ERROR_SUCCESS) {
    @ @<错误代码> =result;
    @ RegCloseKey(hSubKey);
    @ RegCloseKey(hKey);
    @ return 1;
    @ }
    @ result = RegSetValueEx(hSubKey, L"Version", 0, REG_SZ,(BYTE*)@<版本号>.GetText(), static_cast<DWORD>(@<版本号>.GetLength() + 1) * sizeof (TCHAR));
    @ if (result != ERROR_SUCCESS) {
    @ @<错误代码> =result;
    @ RegCloseKey(hSubKey);
    @ RegCloseKey(hKey);
    @ return 1;
    @ }
    @ result = RegSetValueEx(hSubKey, L"UninstallString", 0, REG_SZ, (BYTE*)@<卸载程序路径>.GetText (), static_cast<DWORD>(@<卸载程序路径>.GetLength() + 1) * sizeof (TCHAR));
    @ if (result != ERROR_SUCCESS) {
    @ @<错误代码>=result;
    @ RegCloseKey(hSubKey);
    @ RegCloseKey(hKey);
    @ return 1;
    @ }
    @ RegCloseKey(hSubKey);
    @ RegCloseKey(hKey);
    @ return 0;
}



作者: 峰回路转    时间: 2023-11-11 22:24
赶紧过来学习学习
作者: 创世魂    时间: 2023-11-12 10:51
本帖最后由 创世魂 于 2023-11-12 10:57 编辑

直接用火山提供的  写文本注册项 ()  就好了,不用封装啊。应该这样就行了。


<火山程序 类型 = "通常" 版本 = 1 />

方法 软件_写注册项 <公开 静态>
参数 参_软件名称 <类型 = 文本型>
参数 参_主程序路径 <类型 = 文本型>
参数 参_卸载程序路径 <类型 = 文本型>
参数 参_版本号 <类型 = 文本型>
参数 参_作者 <类型 = 文本型>
参数 参_官网地址 <类型 = 文本型>
{
    写文本注册项 (注册表根目录类型.本地机器, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + 参_软件名称 + "\\DisplayIcon", 参_主程序路径)
    写文本注册项 (注册表根目录类型.本地机器, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + 参_软件名称 + "\\DisplayName", 参_软件名称+参_版本号)
    写文本注册项 (注册表根目录类型.本地机器, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + 参_软件名称 + "\\DisplayVersion", 参_版本号)
    写文本注册项 (注册表根目录类型.本地机器, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + 参_软件名称 + "\\Publisher", 参_作者)
    写文本注册项 (注册表根目录类型.本地机器, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + 参_软件名称 + "\\UninstallString", 参_卸载程序路径)
    写文本注册项 (注册表根目录类型.本地机器, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + 参_软件名称 + "\\URLInfoAbout", 参_官网地址)
}



作者: ゞ情非得已Sky    时间: 2023-11-12 10:52
创世魂 发表于 2023-11-12 10:51
直接用火山提供的  写文本注册项 ()  就好了,不用封装啊。

找不到命令名
作者: 创世魂    时间: 2023-11-12 10:57
ゞ情非得已Sky 发表于 2023-11-12 10:52
找不到命令名

是写文本注册项。和易语言的不一样了。
作者: ゞ情非得已Sky    时间: 2023-11-12 11:00
创世魂 发表于 2023-11-12 10:57
是写文本注册项。和易语言的不一样了。

命名没有统一开头  不好找




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4