递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 1783|回复: 5
打印 上一主题 下一主题

[视窗] 写入控制板卸载列表 开源

[复制链接]

106

主题

446

帖子

2358

积分

金牌会员

Rank: 6Rank: 6

积分
2358
跳转到指定楼层
楼主
发表于 2023-11-11 22:19:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
有一个疑问   不知道为什么  版本号  跟文件大小没生效   可能系统问题



<火山程序 类型 = "通常" 版本 = 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;
}


回复

使用道具 举报

66

主题

253

帖子

2933

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2933
沙发
发表于 2023-11-11 22:24:01 | 只看该作者
赶紧过来学习学习
交流群:669418334
回复

使用道具 举报

444

主题

1万

帖子

3万

积分

超级版主

Rank: 8Rank: 8

积分
39457
板凳
发表于 2023-11-12 10:51:14 | 只看该作者
本帖最后由 创世魂 于 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", 参_官网地址)
}


安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

106

主题

446

帖子

2358

积分

金牌会员

Rank: 6Rank: 6

积分
2358
地板
 楼主| 发表于 2023-11-12 10:52:28 | 只看该作者
创世魂 发表于 2023-11-12 10:51
直接用火山提供的  写文本注册项 ()  就好了,不用封装啊。

找不到命令名
回复

使用道具 举报

444

主题

1万

帖子

3万

积分

超级版主

Rank: 8Rank: 8

积分
39457
5#
发表于 2023-11-12 10:57:56 | 只看该作者

是写文本注册项。和易语言的不一样了。
安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

106

主题

446

帖子

2358

积分

金牌会员

Rank: 6Rank: 6

积分
2358
6#
 楼主| 发表于 2023-11-12 11:00:46 | 只看该作者
创世魂 发表于 2023-11-12 10:57
是写文本注册项。和易语言的不一样了。

命名没有统一开头  不好找
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-9-29 01:46 , Processed in 0.098888 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表