installShield的一个问题,访问外部dll的两个问题,msiexec被病毒修改的问题

VC++ 2015运行库:从原理到实战,彻底解决DLL缺失问题 动态链接库是Windows系统中实现代码复用和模块化的重要机制,它允许多个程序共享同一份库代码,从而减少磁盘空间占用和内存消耗。其核心原理在于程序运行时通过系统加载器将所需的DLL映射到进程地址空间。这一机制的技术价值在于提升了软件部署效率和系统资源利用率,是构建现代Windows应用程序的基石。在实际应用场景中,由Visual C++编译的程序普遍依赖微软官方提供的运行时库,其中2015版本因其引入了通用CRT架构而成为关键分水岭,被后续众多软件所依赖。当这些**运行库**缺失或版本不匹配时,就会触发诸如 阅读详情

[installShield X Express ]

问题描述:

简单的进行了一个安装文件的制作后,build的时候总是出现

ID_STRING1没有赋值,但是不能为nullable

的error提示,虽然能形成安装文件,但是该文件执行时并不正常.

解决过程:

project->export string Table 生成了一个文本文件,查看后发现ID_STRING1没有值,但是并不知道ID_STRING1在is中哪里设置,我人为的在该文件之后添加值,使用project->import string table后,在界面中查看没有看到我刚添加的值.

我在general information页中每个空白处填入了不同的值,然后再次export,发现文件中ID_STRING1已被赋值,通过对比,得知ID_STRING1是publisher/product url,将其赋值后,问题消失.但在什么地方能查明ID_STRING1对应的是什么值呢,这个问题并没有得到答案,期间我在is的帮助及站点上也查过,都没有得到答案.

[调用外部dll的问题]

问题描述:

形如function(const param1:integer;const param2:pSomeStruct)的dll函数(第2个参数为结构体指针)调用时函数执行正常,但是param1在调用完成后,值被修改为0,如果将该参数改为var,则值未更改,但函数得到的结果并不正确.

解决过程:

在sdk中,发现pSomeStruct的成员为6个,而在官方的C++示例程序中,缺只有5个,其中一个由

#ifdef macintosh来控制,于是添加该成员,问题消失,究其原因,C++的代码定义了该变量,但翻译pas单元时,想当然的将该成员去掉,造成该结构体长度变化,而在调用函数,dll将param1地址当做结构体部分的地址,进行了修改,造成const参数调用完成后值被改变.

[调用外部dll的问题2]

问题描述:

一个dll函数,形如funtion(aFunc:TMyFunc),其中一个参数为回调函数,需要传入函数指针,定义该函数

function MyFunc;

后,传入,被dll调用该函数时,在函数体内发生错误.

解决过程:

加上stdcall;调用惯例,问题消失,即使要传给dll的回调函数也应该加入stdcall.结论就是如果要和dll打交道,只要是函数,都应加上stdcall,

[msiexec被病毒修改的问题]

问题描述:

新装系统后,安装msi类型程序时,出现

该服务已停止

的错误

解决过程:

查看(服务)中的windows installer 服务,发现其可执行文件根本不存在.于是人工建立该目录,拷贝msiexec.exe过去,执行安装,仍然报错,

google搜索到该文章http://iask.sina.com.cn/q/98/91/51/519198.shtml

按照其中的win2000部分,问题解决.摘抄如下

 

 

windows installer服务解决方案
很多朋友在安装MSI格式的文件包时,经常会遇到windows installer出错的情况,有如下几种现象:

 

1、所有使用windows installer服务安装的MSI格式程序均不能正常安装,并且系统提示“不能访问windows installer 服务,可能你在安全模式下运行 windows ,或者windows installer 没有正确的安装,请和你的支持人员联系以获得帮助”。
2、察看“windows installer服务”的状态,一般为停用,当你试图启用此服务,会发现此服务已被系统禁用,或则windows installer服务已被标记为删除。
3、如果你重新安装windows installer服务,系统提示“指定的服务已存在”。

当出现了以上现象,是非常令人头疼的,而且问题难以解决,后来经自己研究发现一些非常好的解决方法。

笔者以Windows2000和Windows XP系统为例,根据它们出现的不同问题分别介绍一下解决过程:

一、Windows2000解决过程:

在Windows2000系统中3种现象都是经常出现的。

第一步:点击”开始-->运行“,输入”CMD“命令,在弹出的”CMD命令提示符“窗口中输入”msiexec /unregserver“命令,这样就停掉windows installer服务。

第二步:下载windows installer服务安装程序包,Windows2000/NT系统的安装程序包为”InstMsiW.exe“,Windows98/ME安装程序包为"InstMsiA.exe",Windows XP系统则集成了最新版本的Windows Installer v2.0。

下载”InstMsiW.exe“安装程序包后,将其用winrar解压开,然后进入到此目录中。

第三步:右键单击”msi.inf“文件,点击”安装“选项,接着右键单击” mspatcha.inf “文件,点击”安装“。

第四步:在CMD命令提示符下输入”msiexec /regserver“命令,这样就启动了windows installer服务,重新启动Windows2000系统后,问题就得到解决。

注意:在安装两个inf文件的过程中,不要重新启动系统,全部操作完成后才能重启,另外,如果系统安装了”瑞星病毒防火墙”和“瑞星网络防火墙”,建议在操作过程中关闭瑞星防火墙。

二、Windows XP解决过程:

Windows XP集成了最新版本的Windows Installer v2.0,但在Windows XP里安装MSI程序也会经常出现”找不到windows installer服务”“的错误。

第一步:使用记事本编写installer.reg文件,内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/MSIServer]

"ImagePath"=-

"ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,/

74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,/

00,73,00,69,00,65,00,78,00,65,00,63,00,2e,00,65,00,78,00,65,00,20,00,2f,00,/

56,00,00,00

然后将文件保存为”.reg“格式,双击该文件,将文件内容导入注册表。

第二步:重新启动电脑进入安全模式(启动时按F8键),然后点击”开始-->运行“,输入”CMD“命令,在弹出的”CMD命令提示符“窗口中输入”msiexec /regserver“,最后重新启动系统即可。

 

 

发表于 2005年05月15日 7:49 PM
C++运行库全家桶:解决Windows软件DLL丢失问题的终极方案 Windows软件开发与部署中,动态链接库(DLL)依赖管理是核心基础概念。其原理在于应用程序运行时通过动态链接调用系统共享库,避免代码冗余。这一机制的技术价值在于减小程序体积、便于模块化更新,但同时也带来了“DLL地狱”的兼容性挑战。应用场景广泛覆盖游戏运行、专业软件部署及企业IT环境搭建,其中Visual C++ Redistributable作为微软官方运行时组件,成为解决依赖问题的关键。本文聚焦的C++运行库全家桶正是针对这一痛点,通过集成VC++ 2005至2022等热词版本,提供一站式解决方案 阅读详情

相关推荐

解决MSVCP140.dll缺失:vcredist_x86运行时组件安装与版本管理指南

Windows软件开发与部署中,动态链接库(DLL)是共享代码和资源的核心机制。其原理在于,应用程序在运行时可以调用系统或第三方提供的标准函数库,从而减少冗余代码,提升开发效率和模块化程度。这一技术的核心价值在于确保了软件生态的互操作性和可维护性,使得开发者无需重复实现基础功能。在实际应用场景中,使用Visual C++等编译器开发的软件,普遍依赖于微软提供的对应版本的运行时库(Runtime Library)才能正常执行。当用户系统缺少这些必要的运行时组件时,就会触发诸如“MSVCP140.dll丢失”

weixin_30399155的博客 432

彻底解决Visual C++运行时错误:从诊断到修复的完整指南

动态链接库(DLL)是Windows系统中实现代码共享和模块化的重要机制,它允许多个程序同时调用同一份库代码,从而节省内存并简化更新。其工作原理是通过导出函数表,在程序运行时动态加载所需的库文件。这项技术的核心价值在于提升了软件开发的效率和系统资源的利用率,是现代Windows应用程序的基石。在实际开发与部署中,开发者常使用Visual C++等工具链来构建依赖特定运行库的应用程序。当这些应用程序所依赖的Microsoft Visual C++ Redistributable(VC++运行库)出现缺失、版本

weixin_30245867的博客 524

VisualCppRedist AIO:一键解决Windows C++运行时依赖难题

动态链接库(DLL)是Windows系统中实现代码复用的核心技术,它允许多个程序共享通用的函数库,从而减少软件体积并提升系统效率。其原理在于将公共功能模块封装为独立的库文件,程序运行时通过系统加载器动态链接所需DLL。这项技术的核心价值在于实现了高效的资源管理和模块化开发,但同时也带来了复杂的运行时依赖问题,特别是对于使用Visual C++编译的软件。在实际应用场景中,游戏、企业软件和开发工具普遍依赖特定版本的Microsoft Visual C++ Redistributable,版本缺失或冲突会导致“

weixin_33692284的博客 436

VC++ 2019 x86运行库:32位应用兼容与系统稳定的基石

动态链接库(DLL)是Windows系统中实现代码共享和模块化设计的核心机制,它允许多个应用程序调用同一份函数库,从而减少冗余并便于更新。其原理在于程序运行时通过系统加载器在指定路径搜索并载入所需的DLL文件。这一机制的技术价值在于显著优化了软件部署效率和系统资源利用。然而,当应用程序因缺失特定版本的Microsoft Visual C++ Redistributable运行库(尤其是32位版本)而无法找到关键的DLL(如vcruntime140.dll、msvcp140.dll)时,就会触发“0xc000

aibi9196的博客 458

彻底解决软件错:Visual C++运行库全家桶原理与部署指南

动态链接库(DLL)是Windows系统中实现代码共享和模块化的重要机制,它允许多个应用程序调用同一份公共函数库,从而减少软件体积并便于更新维护。Visual C++运行库正是基于此原理,为使用Visual Studio开发的C++应用程序提供必要的运行时支持。其技术价值在于确保了软件在不同系统环境下的稳定运行,避免了因缺失基础组件导致的启动失败或闪退问题。由于Visual Studio版本迭代,不同版本编译的程序依赖特定版本的运行库,且各版本间不完全兼容,这便形成了复杂的版本矩阵。在游戏运行、专业软件安装

weixin_33724059的博客 400

C# 安装包 MSI 与 EXE 格式对比:5 个关键维度解析与实战选择

本文深入对比了C#安装包的MSI与EXE格式,从部署流程、安全机制、自定义能力、静默安装和卸载行为等5个关键维度进行解析,帮助开发者在技术选型时做出明智决策。MSI适合企业级标准化部署,而EXE在灵活定制方面更具优势,文章还提供了Visual Studio实战配置和混合方案最佳实践。

weixin_30915275的博客 376

MathType 7.8.2安装排障全指南:破解版Office公式插件加载失败原因与修复

MathType作为深度集成于Microsoft Office的COM插件,其本质是通过注册表CLSID、DLL动态注册及Word启动模板(.dotm)协同实现功能区加载。理解COM加载原理与Office Click-to-Run沙盒机制,是解决‘安装成功但不显示’问题的技术前提;其核心价值在于为学术写作提供稳定、可编号、支持LaTeX的公式编辑能力,广泛应用于高校论文、科研文档与教材排版场景。本文聚焦MathType 7.8.2破解版在Windows 10/11与Microsoft 365环境下的典型失效

weixin_30600197的博客 445

KISSSOFT 2024安装与许可证深度配置实战指南

KISSSOFT作为专业级齿轮传动CAE软件,其稳定运行依赖于底层系统环境、运行时库兼容性及许可证服务可靠性。原理上,它深度耦合Intel Fortran求解器、MKL数学库与FlexNet授权体系,对Windows内核策略、PATH变量、服务权限和硬件资源调度极为敏感。技术价值在于规避90%因环境冲突导致的‘能启动不能计算’类故障,保障齿面接触应力、行星架优化等高负载任务毫秒级授权响应。典型应用场景包括摆线减速器模块启用、ISO 21771:2023锥齿轮修形支持及多版本共存部署。本文聚焦KISSSOFT

weixin_33911824的博客 598

%DUMP SESSIONS--List Windows Sessions

%DUMP SESSIONS--List Windows Sessions

z19861216的博客 147

顺序表(Sequential List)详解:从数组到 C 语言实现

顺序表是用连续存储单元依次存储数据元素的线性结构,数组则是其最常见的实现方式,两者本质相同、仅视角不同——数组关注物理存储,顺序表关注逻辑关系。顺序表支持随机访问 $O(1)$,但插入删除需移动元素,效率为 $O(n)$。本文用 C 语言静态数组完整实现了顺序表的初始化、增删改查操作,帮助初学者在不涉及指针的前提下理解其核心原理,为后续学习动态顺序表打下基础。

Guangyu536的博客 299

windows 驱动实例分析系列: HidHide驱动分析-HidHideCLI 篇(三)

`HID.cpp` 模块实现了完整的设备枚举与信息采集,这些功能与 GUI 版本共享相同的核心逻辑,但在输出格式上存在差异——CLI 版本输出 JSON,而 GUI 版本填充树形控件。

王马的博客 128

windows 驱动实例分析系列: HidHide驱动分析-HidHideClient 篇(中)

`CWhitelistDlg` 是主对话框中的应用标签页,负责管理**白名单(Whitelist)**——即允许访问隐藏设备的应用程序列表。用户可以通过"插入"按钮选择可执行文件,或直接通过拖放(Drag & Drop)将 `.exe`、`.com`、`.bin` 文件拖入列表,从而实现快速添加。该对话框同时提供"删除"按钮移除选中条目,以及"反转白名单"复选框用于切换逻辑模式。

王马的博客 842

【回溯】【中等】全排列/子集/电话号码的字母组合/组合总和/括号生成/单词搜索/分割回文串

【待更新】

2301_81831660的博客 45

cmake教程

单/多个源文件、不同目录下的源文件、组织架构(源文件/头文件/对象文件/elf文件/库文件)、库的编译控制与链接(.so/.a)、编译选项、控制选项(生成部分文件/编译部分代码)

Wangshijie1015的博客 54

Qt的常用类QList--序列数据管理

因此可以采用下标来进行索引进行快速的访问。而QVector是Qt对所有数组的封装,它元素的存储位置彼此相邻,也就是说它是以数组的形式进行存储的,它的插入删除操作常常伴随着内存的移动,所以效率上并没有QList高。QlinkList我们可以把它当成一个链表,它以非连续的内存块进行保存数据,所以它不能使用下标进行访问,它更适合于数据的插入操作。通过list.at()函数和下标,它的区别就是通过下标的时候,QList会对它的数据进行一次拷贝,也就是内存的一次复制,所以我们通过下标这种方式效率不高。

qq_42831443的博客 99

75 条文章索引被一条 add 清成 1 条,退出码还是 0:tri-article 的 index.py 我读了 205 行

以一次真实清库事故切入,逐段复现 tri-article 索引脚本的三处静默失败并给出可运行加固代码(严格加载抛错、原子写 os.replace、长度差预筛的软去重)。附带 dedup 省略 --slug 时判定退化为「slug 长度 ≤2」、search 只搜 title、真实 75 条索引中 6 条在 domain 维度不可达、save_index 零调用等实测结论,并用 65/75 的哈希自证说明历史失配来自改标题未回写。

三声三视的博客 152

33 链表排序

给你链表的头结点head,请将其按排列并返回。[1,2,3,4]head = [][]你可以在O(n log n)时间复杂度和常数级空间复杂度下,对链表进行排序吗?

weixin_52079669的博客 205

Mybatis的多表操作问题

Q1 :一对一表关系之中哪个属性封装到<ResultMap>中?哪一个封装到<association>当中?Q2:一对多表关系之中哪个属性封装到<ResultMap>中?哪一个封装到<collection>当中?A:主要看谁包含谁,例如:一个用户 (User) 持有一张身份证 (IdCard)所以把OrderList封装进collection中。一个用户名下的所有订单。

m0_57532232的博客 221
上一篇: Classes单元中一段很有趣的代码
下一篇: 使用Apache发布delphi开发的isapi类型的webservice
jalphi
博客等级 码龄20年 10粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值