最近在看注冊表方面的東西。正巧醒哥回來(lái)了,讓我做個(gè)修改文件關(guān)聯(lián)的程序。具體用什么方法實(shí)現,不用管,只要能實(shí)現就可以了。
那就用注冊表來(lái)實(shí)現好了。
那么利用注冊表的話(huà)有幾種方法可以修改關(guān)聯(lián)方式呢?
首先介紹一下最簡(jiǎn)單的一種方法:直接修改打開(kāi)方式。

首先先嘗試下修改.txt文件吧, 如果直接修改.exe文件的話(huà),怕修改以后regedit.exe都進(jìn)不去了,那就囧了,呵呵。
首先我們找到.txt文件的打開(kāi)方式所在的鍵值位置:
根鍵是
HKEY_CLASSES_ROOT
子鍵是
"txtfile\shell\open\command"
這里的默認鍵值是
%SystemRoot%\system32\NOTEPAD.EXE %1
這里簡(jiǎn)單介紹一下
這個(gè)鍵值的類(lèi)型是REG_EXPAND_SZ, 它與REG_SZ有什么區別呢?
我們看到默認鍵值里面%SystemRoot% 這個(gè)大家應該都知道是環(huán)境變量,兩個(gè)%中間的SystemRoot 對應了你自己電腦里面的路徑。
REG_EXPAND_SZ 在執行的時(shí)候會(huì )把環(huán)境變量轉換成具體的路徑。
那么最后那個(gè) %1 是什么意思呢?
我們這里嘗試一下去掉%1 ,會(huì )發(fā)現打開(kāi)任何的.txt文件,都顯示空白的文本文件。
也就是說(shuō) 參數%1 的作用就是啟動(dòng)Notepad程序的同時(shí) 打開(kāi)這個(gè)txt文件
現在我們把這個(gè)默認的鍵值改掉,比如改成 "C:\Windows\System32\cmd.exe"
現在再次嘗試一下,打開(kāi)任何.txt文件都會(huì )啟動(dòng)cmd.exe了
那么對于exe關(guān)聯(lián)應該也是一樣的。我們找到exe關(guān)聯(lián)啟動(dòng)方式的位置:
主鍵
HKEY_CLASSES_ROOT
子鍵
"exefile\shell\open\command"
鍵值
"%1" %*
自己嘗試一下,雖然成功了,但是發(fā)現了幾個(gè)比較奇怪的問(wèn)題。。。
1.比如改成qq.exe 隨便點(diǎn)個(gè)exe文件打開(kāi),內存占用突然變得很大,然后很久才打開(kāi)。不知道為什么。
然后就是通過(guò)API來(lái)實(shí)現了。
這個(gè)其實(shí)就是幾個(gè)函數的問(wèn)題啦,還是比較簡(jiǎn)單的,明天詳細實(shí)現并講解一下。
最后想想,還有沒(méi)有別的方法來(lái)實(shí)現呢?今天自己借了本注冊表編程的書(shū)簡(jiǎn)單看了下,發(fā)現是有的?。。?!
這里先賣(mài)個(gè)關(guān)子,今天很晚了,洗洗先睡了,明天接著(zhù)上!~~~
聯(lián)系客服