資源描述:
《ini文件讀寫例程.docx》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、RFC11:03:13MFCINI文件讀寫INI文件是Windows系統(tǒng)中一類比較重要的文件,通常用來存放系統(tǒng)或者應(yīng)用程序的配置信息,以方便系統(tǒng)或者應(yīng)用程序在初始化時再次讀入。比如Windows系統(tǒng)中的配置文件win.ini和system.ini,它們就主要存放系統(tǒng)啟動或用戶登陸時的系統(tǒng)信息。這項功能在方便了系統(tǒng)配置的同時,也為非法程序的自動運行提供了可乘之機。顯然,這類文件的重要性應(yīng)該引起我們的重視。但是對于這樣的ini文件的讀寫操作卻與普通文本文件有著種種的不同,尤其體現(xiàn)在編程實現(xiàn)上。筆者曾經(jīng)嘗試用手動更改的方法在文件中加入一些項,使得自己的程序能夠在初始化時自動運行
2、,但是卻沒有成功,最后還是藉由編程的方法來實現(xiàn)了。這里主要涉及到一些API函數(shù),而這些函數(shù)又往往不被人們所熟知,本文的任務(wù)就是在介紹這些函數(shù)的同時,用簡單的程序作了示例,下面我們言歸正傳。先來看幾個往配置文件中寫入信息的函數(shù):(1)WritePrivateProfileSection()用來在ini文件中直接向指定區(qū)域?qū)懭腈I和值的信息,其原型如下:BOOLWritePrivateProfileSection(LPCTSTRlpAppName,//指向指定字段的字符串LPCTSTRlpString,//指向要寫入的鍵與值字符串LPCTSTRlpFileName//指向文件名
3、稱字符串,如果不包含完整路徑,則在windows目錄下創(chuàng)建);用法示例:WritePrivateProfileSection(_T(“windows”),_T(“l(fā)oad=c:\winntotepad.exe”),_T(“c:\winnt\win.ini”));(2)WritePrivateProfileString()與上一個函數(shù)的不同點在于其將鍵和值分開了,原型如下:BOOLWritePrivateProfileString(LPCTSTRlpAppName,//指向指定字段的字符串LPCTSTRlpKeyName,//指向指定鍵的字符串LPCTSTRlp
4、String,//指向指定值的字符串LPCTSTRlpFileName//指向文件名稱字符串);用法示例:WritePrivateProfileString(_T(“windows”),_T(load”)_T(“c:\winntotepad.exe”),_T(“c:\winnt\win.ini”));(3)WritePrivateProfileStruct()與前面兩個的不同在于文件尾有校驗和,原型如下:BOOLWritePrivateProfileStruct(LPCTSTRlpszSection,//指向指定字段的字符串LPCTSTRlpszKey,//指
5、向指定鍵的字符串LPVOIDlpStruct,//指向存放要加入的數(shù)據(jù)的緩沖區(qū),如果為NULL,則刪除鍵UINTuSizeStruct,//緩沖區(qū)大小,以字節(jié)為單位LPCTSTRszFile//以零結(jié)尾的文件名稱字符串,如果為空,則向win.ini寫入);用法示例:WritePrivateProfileStruct(_T(“windows”),_T(“l(fā)oad”),pBuffer,sizeof(pBuffer),_T(“c:\winnt\win.ini”));(4)還有兩個函數(shù),是專門用來向win.ini文件寫入的,函數(shù)原型如下:BOOLWriteProfileSec
6、tion(LPCTSTRlpAppName,//指向指定字段的字符串LPCTSTRlpString//指向指定值的字符串);BOOLWriteProfileString(LPCTSTRlpAppName,//指向指定字段的字符串LPCTSTRlpKeyName,//指向指定鍵的字符串LPCTSTRlpString//指向指定值的字符串);下面來看幾個對應(yīng)的從ini文件獲取信息的API函數(shù),上面已經(jīng)說得很詳細了,這里只說其中兩個:DWORDGetPrivateProfileString(LPCTSTRlpAppName,//指向指定字段的字符串LPCTSTRlpKeyNam
7、e,//指向鍵的字符串LPCTSTRlpDefault,//如果INI文件中沒有前兩個參數(shù)指定的字段名或鍵名,則將此值賦給變量LPTSTRlpReturnedString,//存放INI文件中值的目的緩存區(qū)DWORDnSize,//目的緩沖區(qū)的大小,以字節(jié)為單位LPCTSTRlpFileName//指向INI文件名稱的字符串);UINTGetPrivateProfileInt(LPCTSTRlpAppName,//指向指定字段的字符串LPCTSTRlpKeyName,//指向鍵的字符串INTnDefault,//如果INI文件