在.Net 1.x當(dāng)中,使用Microsoft.Win32.RegistryKey類的GetValue方法讀取注冊表數(shù)據(jù)時,其實數(shù)據(jù)都是經(jīng)過“處理”的;
例如,某個字符串?dāng)?shù)據(jù)本來的值是%SystemRoot%\System32\IoLogMsg.dll但是用GetValue方法得到的數(shù)據(jù)卻是C:\WINDOWS\System32\IoLogMsg.dll
也就是說,在讀取注冊表中的字符串時,系統(tǒng)會自作主張地替你展開環(huán)境變量。
這的確省去我們調(diào)用Environment.ExpandEnvironmentVariables方法的麻煩,但是反過來,當(dāng)我們希望原封不動地拷貝一個注冊表的字符串時則束手無策。
在.Net2.0當(dāng)中,我們驚喜地發(fā)現(xiàn)Microsoft.Win32.RegistryKey類有了一個小小的改動,就是其GetValue方法增添了一個新的重載:
public Object GetValue (
string name,
Object defaultValue,
RegistryValueOptions options
)
該方法的第三個參數(shù)是一個枚舉,目前只有一個有用的值就是DoNotExpandEnvironmentNames。
指定該值,GetValue得到的結(jié)果就是沒有經(jīng)過展開的數(shù)據(jù)了。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com