通过修改注册表修改文件图标

在这里简单介绍一下怎么通过修改注册表来更换指定类型的文件图标。 在注册表中有一个名为HKEY_LOCAL_MACHINE的主键,在这个主键下会看到有好多以小数点开头的子键,这些就是系统当前已经注册的文件类型,如果再往下看的话你还会看到比较熟悉的".exe",".mp3"等等。这里以exe文件类型为例,来介绍怎么修改图标。

首先定位到".exe"这个子键,点击它(不要展开),会在右侧看到它有一个默认的REG_SZ类型的表项,默认数值数据为exefile。找到这个之后,然后再定位到exefile这个子键(还是在HKEY_LOCAL_MACHINE中),,展开他会看见他下面还有一个子键,名字是DefaultIcon(如果没有就自己创建一下),这个DefaultIcon也会有一个默认的REG_SZ类型的表项,这个表项的内容就是图标位置了,exefile下的这个默认是"%1",只要把这个改成图标所在的路径(比如"c:\test.ico")就可以更换图标了。重启一下资源管理器就会发现图标已经换成你指定了图标了,换回来的话只要把这个改成"%1"就好了。

以上讲的是手动修改注册表来修改文件图标,接下来我们用C语言编程实现

首先简单介绍一下相关的几个操作注册表的API函数(具体参数及各自含义在这里不做赘述,读者可自行查阅资料)。 RegCreateKey函数,用来创建一个注册表键,如果该键已存在,则打开该项。 RegQueryValueEx函数,查询指定表项的内容。 RegSetValueEx函数,设置指定表项的值。 RegCloseKey函数,用来释放指定注册键的句柄。

有了这些API函数,我们就可以编程来修改文件图标了。 第一步:用RegCreateKey(HKEY_CLASSES_ROOT, lpFileType, &hKey)打开.exe子键(lpFileType为指向文件类型的字符串指针,也即是要打开注册键的名称,hKey是用来存放打开注册键的句柄)。 第二步:用RegQueryValueEx(hKey, NULL, NULL, &dwType, (LPBYTE)tchBuffer, &dwBufLenth)获取该类型的打开信息(hKey即注册键句柄,dwType是用于装载取回数据类型的一个变量,tchBuffer是存放键值的缓冲区,dwBufLenth指定获取的最大长度)。 第三步:用RegCloseKey(hKey)关闭注册键句柄(这很重要,不能忽略!!!!!)。 第四步:用RegCreateKey(HKEY_CLASSES_ROOT, tchRegPath, &hKey)打开exefile下的DefaultIcon子键(tchRegPath是他的位置,可由第二步得到的tchBuffer加上DefaultIcon组合得到)。 第四步:用RegSetValueEx(hKey, NULL, NULL, REG_SZ, (LPBYTE)lpIconPath, nIconPathLen)设置键值(lpIconPath是指向图标路径字符串的指针,nIconPathLen是路径长度)。 第五步:用RegCloseKey(hKey)关闭注册键句柄(这很重要,不能忽略!!!!!)。 至此,修改成功。

只剩下一条路,那就是成功的路。

通过修改注册表修改文件图标

相关文章:

你感兴趣的文章:

标签云: