利用注册表修改文件关联

最近在看注册表方面的东西。正巧醒哥回来了,让我做个修改文件关联的程序。具体用什么方法实现,不用管,只要能实现就可以了。

那就用注册表来实现好了。

那么利用注册表的话有几种方法可以修改关联方式呢?

首先介绍一下最简单的一种方法:直接修改打开方式。

首先先尝试下修改.txt文件吧, 如果直接修改.exe文件的话,怕修改以后regedit.exe都进不去了,那就囧了,呵呵。

首先我们找到.txt文件的打开方式所在的键值位置:

根键是

HKEY_CLASSES_ROOT

子键是

"txtfile\shell\open\command"

这里的默认键值是

%SystemRoot%\system32\NOTEPAD.EXE %1

这里简单介绍一下

这个键值的类型是REG_EXPAND_SZ,  它与REG_SZ有什么区别呢?

我们看到默认键值里面%SystemRoot% 这个大家应该都知道是环境变量,两个%中间的SystemRoot 对应了你自己电脑里面的路径。

REG_EXPAND_SZ 在执行的时候会把环境变量转换成具体的路径。

那么最后那个 %1 是什么意思呢?

我们这里尝试一下去掉%1 ,会发现打开任何的.txt文件,都显示空白的文本文件。

也就是说 参数%1 的作用就是启动Notepad程序的同时 打开这个txt文件

现在我们把这个默认的键值改掉,比如改成 "C:\Windows\System32\cmd.exe"

现在再次尝试一下,打开任何.txt文件都会启动cmd.exe了

那么对于exe关联应该也是一样的。我们找到exe关联启动方式的位置:

主键

HKEY_CLASSES_ROOT

子键

"exefile\shell\open\command"

键值

"%1" %*

自己尝试一下,虽然成功了,但是发现了几个比较奇怪的问题。。。

1.比如改成qq.exe  随便点个exe文件打开,内存占用突然变得很大,然后很久才打开。不知道为什么。

 

然后就是通过API来实现了。

这个其实就是几个函数的问题啦,还是比较简单的,明天详细实现并讲解一下。

 

最后想想,还有没有别的方法来实现呢?今天自己借了本注册表编程的书简单看了下,发现是有的!!!!

这里先卖个关子,今天很晚了,洗洗先睡了,明天接着上!~~~

 


你可能感兴趣的:(注册表)