最近在看注册表方面的东西。正巧醒哥回来了,让我做个修改文件关联的程序。具体用什么方法实现,不用管,只要能实现就可以了。 那就用注册表来实现好了。 那么利用注册表的话有几种方法可以修改关联方式呢? 首先介绍一下最简单的一种方法:直接修改打开方式。 首先先尝试下修改.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来实现了。 这个其实就是几个函数的问题啦,还是比较简单的,明天详细实现并讲解一下。
最后想想,还有没有别的方法来实现呢?今天自己借了本注册表编程的书简单看了下,发现是有的!!!! 这里先卖个关子,今天很晚了,洗洗先睡了,明天接着上!~~~ |
|