- 博客(8)
- 收藏
- 关注
原创 在“更改或删除程序”内添加自己的卸载入口
一般情况下,我们的安装程序都是使用windows的安装管理接口实现的,它会自动生成卸载程序并在控制面板中的“更改或删除程序”中添加一个删除入口。但是有时候我们可能需要自己通过代码添加自己的删除入口,该怎么办才能让我们的程序也能通过“更改或删除程序”来卸载呢?答案是:修改注册表。在注册表HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentV
2010-03-27 17:43:00
1675
原创 windows根据内容搜索文件的原理
windows的桌面搜索中的一个功能是根据内容搜索文件,但是面对不同的文件有不同的文件格式,他是怎么实现对多种文件格式的支持的呢?它的秘密武器就是文本过滤器。在注册表中可以为每种文件格式指定它的过滤器组件接口的CLSID,例如:HKEY_CLASSES_ROOT/.htm/PersistentHandler/{eec97550-47a9-11cf-b952-00aa0051fe20}根
2010-03-27 17:32:00
2025
原创 windows当前安装的程序的信息
都在注册表路径:HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/UninstallHKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall下。通过他们可以得到当前所有安装程序的信息,也可以修改其中的数据,添加自己的程序卸载入口。
2010-03-24 18:13:00
582
原创 以后不再忘记修改运行时库模式
程序提交测试后才发现运行时依赖运行时库文件。这意味着提交的程序根本没有办法运行。真是郁闷。记得之前在这个上面碰过钉子,现在又忘了,记下这个事情以不时提醒自己。 在运行时库上碰的钉子还有:调用者与静态链接库的运行时库模式不一致,链接程序时会出一堆莫名其妙的错误;一个多线程程序,但是项目运行库模式设置为“单线程”,也许会导致程序异常崩溃。更可笑的是,DEBUG下设置运行库模式为
2010-03-17 14:22:00
633
原创 std::string 内存管理特别,多线程使用时应注意
VC2003开发程序,遇到一个崩溃的问题,经过苦苦查询,发现和std::string的内存管理以及自己的使用方法有关。std::string使用懒惰的内存管理策略。例如:string str1 = "sdsada";string str2 = str1;这时两个对象所指的字符串内存其实是同一块内存。也就是说,当通过str1构造str2的时候,str2并没有立刻分配一块自己的字符串内
2010-03-17 14:05:00
2740
原创 COM组件与编译的字符集类型
用VC6.0 ATL编译一个多字节字符集的组件,在有中文路径下进行注册,发现注册表中的文件路径的中文变成了乱码(XP、Vista、Windows7下都是)。字符集类型设置为UNICODE,编译出来的组件没有这个问题。 VC2003编译的多字节字符集的组件则可以在中文路径下正确被注册。但是好像需要管理员权限。 为什么呢?实际情况总是比理论复杂!
2010-01-26 18:27:00
644
原创 动态库接口数据类型
动态库接口数据类型不宜条件使用编译类型,比如TCHAR,CString等。因为,动态库的使用者和动态库对这些类型的理解可能是不同的。若不同,将引起错误。
2010-01-26 18:24:00
722
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人