独钓寒江雪

用C++的优雅,驯服Windows的狂野

转储文件也就是我们常说的 dump 文件,可以把转储文件看成软件的某个时刻的一个快照,我们一般在软件出现问题时手动生成或者程序自动生成转储文件。

本文介绍几种借助第三方工具生成转储文件的方法,并在最后附上使用代码生成转储文件的方法。

阅读全文 »

介绍一个我开发的开源NSIS UI插件 NSIS-UI-Plugin,基于 NSIS-UI-Plugin 插件我们可以快速使用NSIS制作类似QQ等软件那样的安装包。

该插件默认使用Qt作为界面库(不需要编译Qt静态库,可以使用Qt动态库),但也可以很方便的切换使用其他界面库,如DuiLib等。

阅读全文 »

在早期的 Windows 操作系统中,在同一用户下运行的所有进程有着相同的安全等级,拥有相同的权限。此时进程可以自由地发送Windows 消息到其他进程的窗口。

从 Windows Vista 开始,对于某些 Windows 消息,这一方式再也行不通了,进程(或者其他的对象)开始拥有一个新的属性–特权等级(Privilege Level)。此时一个特权等级较低的进程不再可以向特权等级较高的进程发送消息,即便他们在相同的用户权限下运行也不行,这就是所谓的用户界面特权隔离(User Interface Privilege Isolation, 简称 UIPI)。

阅读全文 »

C++代码编译流程

以下面 C++代码为例:

1
2
3
4
5
6
7
#include <stdio.h>

int main()
{
printf("Hello World");
return 0;
}

编译成二进制文件需要经过如下 4 个过程:

  • 预编译:将 hello.c 和 stdio.h 预编译为 hello.i
  • 编译:将 hello.i 编译为 hello.s
  • 汇编:将 hello.s 翻译为机器指令 hello.o(.o 目标文件)
  • 链接:链接各种需要的库和其他目标文件(该 hello 程序不需要)得到可执行文件 hello.out(相当于 windows 的.exe)。
阅读全文 »
0%