最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于重啟后消失的注冊表鍵值的詳細(xì)介紹

 更新時間:2013年05月17日 17:01:45   作者:  
本篇文章是對重啟后消失的注冊表鍵值進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
今天遇到一個bug,折騰了半天才解決掉,分享給大家。
Bug描述
一位開發(fā)人員調(diào)用下面的代碼來創(chuàng)建一個注冊表鍵值:
復(fù)制代碼 代碼如下:

HKEY hKey;
if(::RegOpenKeyEx(HKEY_CURRENT_USER, DemoRegKey, 0, KEY_WRITE, &hKey) != ERROR_SUCCESS)
{
    RegCreateKeyEx(HKEY_CURRENT_USER, DemoRegKey, 0, NULL, REG_OPTION_VOLATILE
        , KEY_ALL_ACCESS   , NULL   , &hKey, NULL);       
}

執(zhí)行后,成功的在注冊表編輯器中看到了鍵值,后續(xù)從中獲取值等代碼沒有任何問題。
提交測試后發(fā)現(xiàn),當(dāng)系統(tǒng)重啟后,上面的程序創(chuàng)建的注冊表鍵值都沒有了,導(dǎo)致后面讀取鍵值的代碼都報錯。
Why?
隨后我調(diào)整了代碼,發(fā)現(xiàn)下面的代碼在重啟后得到的錯誤碼是2
復(fù)制代碼 代碼如下:

LONG lRet;
lRet = ::RegOpenKeyEx(HKEY_CURRENT_USER, DemoRegKey, 0, KEY_WRITE, &hKey);

執(zhí)行這段代碼lRet的值是2. 錯誤碼2的意思是:系統(tǒng)找不到指定的文件。 對于注冊表函數(shù)而已,就是對應(yīng)的鍵不存在。
調(diào)試后發(fā)現(xiàn),創(chuàng)建注冊表的代碼的確成功執(zhí)行了,在注冊表中也可以看得到。同時,再調(diào)用讀取鍵值的代碼,也沒有任何問題。但是一旦重啟電腦,路徑就不存在了,里面保存的鍵值都沒有了。
看來是某些程序刪掉了我的鍵值,于是查找所有刪除鍵值的代碼,沒有找到。
在重啟前將所有的程序都刪除掉。但是重啟后,該死的鍵值還是沒有出現(xiàn)。
看來是系統(tǒng)或者其它程序刪除的。難道我的鍵值和某些程序的鍵值重名了?好,這次用guid做鍵名,還是重啟后沒有了。
哇哇,真是抓狂啊。
這時候,我回過頭來再細(xì)看所有創(chuàng)建注冊表相關(guān)的代碼,因為必定是我的程序?qū)е骆I值消失的。
我注意到了REG_OPTION_VOLATILE  這個奇怪的參數(shù)。
MSDN之后,我終于找到了原因,就是這個參數(shù)造成的。
原因
REG_OPTION_VOLATILE  這個參數(shù)的意思是創(chuàng)建的注冊表鍵值都位于內(nèi)存中,不會保存到相應(yīng)的注冊表文件中。
英文如下:
復(fù)制代碼 代碼如下:

All registry keys are created as volatile, and the information is stored in memory and is not preserved when the corresponding registry hive is unloaded. For HKEY_LOCAL_MACHINE, this occurs when the OS is shut down. The RegSaveKey function does not save volatile registry keys. This flag is ignored for keys that already exist.

所以,重啟后這些鍵值當(dāng)然就沒有了。
解決辦法
很簡單,使用REG_OPTION_NON_VOLATILE 即可
復(fù)制代碼 代碼如下:

RegCreateKeyEx(HKEY_CURRENT_USER, DemoRegKey, 0, NULL, REG_OPTION_NON_VOLATILE
            , KEY_ALL_ACCESS   , NULL   , &hKey, NULL);

這個可以用在測試上。一重啟,之前創(chuàng)建的鍵值都沒了。

相關(guān)文章

  • C語言獲得電腦的IP地址的小例子

    C語言獲得電腦的IP地址的小例子

    C語言獲得電腦的IP地址的小例子,需要的朋友可以參考一下
    2013-05-05
  • 詳解C++-(=)賦值操作符、智能指針編寫

    詳解C++-(=)賦值操作符、智能指針編寫

    C++的智能指針是克服C++大坑的非常有用的的手段,之所以說它智能,是因為它為程序員克服了重要的編程問題——懸掛指針,下面通過本文給大家分享C++-(=)賦值操作符、智能指針編寫,感興趣的朋友一起看看吧
    2018-03-03
  • C語言如何求整數(shù)的位數(shù)及各位數(shù)字之和

    C語言如何求整數(shù)的位數(shù)及各位數(shù)字之和

    這篇文章主要介紹了C語言如何求整數(shù)的位數(shù)及各位數(shù)字之和,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言實現(xiàn)酒店客房管理系統(tǒng)課程設(shè)計

    C語言實現(xiàn)酒店客房管理系統(tǒng)課程設(shè)計

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)酒店客房管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • c++11 多線程編程——如何實現(xiàn)線程安全隊列

    c++11 多線程編程——如何實現(xiàn)線程安全隊列

    這篇文章主要介紹了c++ 如何實現(xiàn)線程安全隊列,幫助大家更好的理解和學(xué)習(xí)c++的相關(guān)知識,感興趣的朋友可以了解下
    2020-11-11
  • C++關(guān)于樹的定義全面梳理

    C++關(guān)于樹的定義全面梳理

    樹是一種重要的非線性數(shù)據(jù)結(jié)構(gòu),直觀地看,它是數(shù)據(jù)元素(在樹中稱為結(jié)點)按分支關(guān)系組織起來的結(jié)構(gòu),很象自然界中的樹那樣。樹結(jié)構(gòu)在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機(jī)構(gòu)都可用樹形象表示,本篇介紹二叉樹的遞歸與非遞歸遍歷的方法
    2022-06-06
  • C#使用反射加載多個程序集的實現(xiàn)方法

    C#使用反射加載多個程序集的實現(xiàn)方法

    下面小編就為大家?guī)硪黄狢#使用反射加載多個程序集的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 關(guān)于C語言中弱符號與弱引用的實際應(yīng)用問題

    關(guān)于C語言中弱符號與弱引用的實際應(yīng)用問題

    在編碼過程中,我們經(jīng)常遇到符號重定義的錯誤問題,本文通過實例代碼展示給大家介紹了C語言弱符號與弱引用的實際應(yīng)用問題,一起看看吧
    2021-09-09
  • C++ 二維數(shù)組傳參的四種方式

    C++ 二維數(shù)組傳參的四種方式

    C++的二維數(shù)組里面,通過用數(shù)組名傳參,傳過去后數(shù)組名會退化成一個一維數(shù)組指針,所以C++的函數(shù)參數(shù)不能像C語言一樣去寫,本文主要介紹了C++ 二維數(shù)組傳參的四種方式,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • 使用C語言判斷英文字符大小寫的方法

    使用C語言判斷英文字符大小寫的方法

    這篇文章主要介紹了使用C語言判斷英文字符大小寫的方法,分別為isupper()函數(shù)和islower()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08

最新評論

内丘县| 普格县| 漳平市| 广德县| 民勤县| 阿尔山市| 思茅市| 东阳市| 株洲市| 安平县| 凤翔县| 衡山县| 迁西县| 乡城县| 大庆市| 泰宁县| 新巴尔虎左旗| 玛纳斯县| 白沙| 镇原县| 岗巴县| 行唐县| 桃源县| 淳化县| 五河县| 游戏| 石阡县| 江北区| 屏南县| 宜春市| 泌阳县| 都匀市| 武鸣县| 咸宁市| 凤庆县| 巫溪县| 神木县| 凤庆县| 商河县| 凤庆县| 措美县|