home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 June / VPR0106A.BIN / OLS / PREX102 / PrEx102.lzh / Src.lzh / yfRegistry.cpp < prev    next >
C/C++ Source or Header  |  2001-02-23  |  8KB  |  243 lines

  1. //---------------------------------------------------------------------------
  2. //      yfRegistry.cpp
  3. //---------------------------------------------------------------------------
  4. #include "yfRegistry.h"
  5.  
  6. //----------yfRegistryのstatic変数の定義-------------------------------------
  7.  
  8. //----------コンストラクタ---------------------------------------------------
  9. //---------------------------------------------------------------------------
  10. //  関数名:void yfRegistry::yfRegistry(void)
  11. //  アクセス制限:Public
  12. //  入力:
  13. //        型:void
  14. //      名前:なし
  15. //      内容:なし
  16. //  動作:
  17. //      内容:コンストラクタ
  18. //
  19. //---------------------------------------------------------------------------
  20. yfRegistry::yfRegistry()
  21.   :RegKey(NULL), RootKey(HKEY_CURRENT_USER), StrBuffer(NULL)
  22. {
  23. }
  24. //----------デストラクタ-----------------------------------------------------
  25. //---------------------------------------------------------------------------
  26. //  関数名:void yfRegistry::~yfRegistry(void)
  27. //  アクセス制限:Public
  28. //  入力:
  29. //        型:void
  30. //      名前:なし
  31. //      内容:なし
  32. //  動作:
  33. //      内容:デストラクタ
  34. //
  35. //---------------------------------------------------------------------------
  36. yfRegistry::~yfRegistry(void)
  37. {
  38.     CloseKey();
  39.  
  40.     delete[] StrBuffer;
  41.     StrBuffer = NULL;
  42. }
  43. //---------------------------------------------------------------------------
  44. //---------------------------------------------------------------------------
  45. //      Public
  46. //---------------------------------------------------------------------------
  47. //---------------------------------------------------------------------------
  48. //      設定関係
  49. //---------------------------------------------------------------------------
  50. //---------------------------------------------------------------------------
  51. //  関数名:int yfRegistry::SetRootKey(const HKEY SetKey)
  52. //  アクセス制限:
  53. //  入力:
  54. //        型:const HKEY
  55. //      名前:SetKey
  56. //      内容:ルートキー
  57. //  出力:
  58. //        型:int
  59. //      返値:0
  60. //      内容:成功
  61. //      返値:1
  62. //      内容:設定失敗
  63. //  動作:
  64. //      内容:ルートキーの設定をする
  65. //
  66. //---------------------------------------------------------------------------
  67. int yfRegistry::SetRootKey(const HKEY SetKey)
  68. {
  69.     //-----------------------------------------------------------------------
  70.     //  条件分岐
  71.     //      スイッチ変数:SetKey
  72.     //      スイッチ内容:設定するルートキー
  73.     //          case:HKEY_CLASSES_ROOT
  74.     //          case:HKEY_CURRENT_USER
  75.     //          case:HKEY_LOCAL_MACHINE
  76.     //          case:HKEY_USERS
  77.     //          case:HKEY_CURRENT_CONFIG
  78.     //          case:HKEY_DYN_DATA
  79.     //      動作内容:設定する
  80.     //-----------------------------------------------------------------------
  81.     switch ((DWORD)SetKey)
  82.     {
  83.         case HKEY_CLASSES_ROOT:
  84.         case HKEY_CURRENT_USER:
  85.         case HKEY_LOCAL_MACHINE:
  86.         case HKEY_USERS:
  87.         case HKEY_CURRENT_CONFIG:
  88.         case HKEY_DYN_DATA:
  89.             RootKey = SetKey;
  90.             return(0);
  91.      }
  92.      return(1);
  93. }
  94. //---------------------------------------------------------------------------
  95. //  関数名:int yfRegistry::OpenKey(LPCTSTR SubKey, const bool CanCreate)
  96. //  アクセス制限:
  97. //  入力:
  98. //        型:LPCTSTR
  99. //      名前:SubKey
  100. //      内容:開くサブキー
  101. //        型:const bool
  102. //      名前:CanCreate
  103. //      内容:キーが存在しない場合作るかどうか
  104. //  出力:
  105. //        型:int
  106. //      返値:0
  107. //      内容:成功
  108. //      返値:1
  109. //      内容:設定失敗
  110. //  動作:
  111. //      内容:指定したキーを開く
  112. //
  113. //---------------------------------------------------------------------------
  114. int yfRegistry::OpenKey(LPCTSTR SubKey, const bool CanCreate)
  115. {
  116.     //-----------------------------------------------------------------------
  117.     //  条件実行
  118.     //        条件式:NULL != RegKey
  119.     //      条件内容:すでに作成済み
  120.     //      動作内容:エラー
  121.     //-----------------------------------------------------------------------
  122.     if (NULL != RegKey)
  123.     {
  124.          return(1);
  125.     }
  126.  
  127.     //-----------------------------------------------------------------------
  128.     //      初期化部分(Initialization)
  129.     //-----------------------------------------------------------------------
  130.     LONG Ret;
  131.  
  132.     //-----------------------------------------------------------------------
  133.     //  条件分岐
  134.     //        条件式:false != CanCreate
  135.     //      条件内容:作成するように指定
  136.     //      動作内容:指定したキーを開く(RegCreateKeyEx)
  137.     //        条件式:false == CanCreate
  138.     //      条件内容:作成しないように指定
  139.     //      動作内容:指定したキーを開く(RegOpenKeyEx)
  140.     //-----------------------------------------------------------------------
  141. //    if (false != CanCreate)
  142. //    {
  143. //        Ret = ::RegCreateKeyEx(RootKey, SubKey, 0, KEY_READ, &RegKey);
  144. //    } else {
  145.         Ret = ::RegOpenKeyEx(RootKey, SubKey, 0, KEY_READ, &RegKey);
  146. //    }
  147.     //-----------------------------------------------------------------------
  148.     //  条件実行
  149.     //        条件式:ERROR_SUCCESS != Ret
  150.     //      条件内容:エラーの場合
  151.     //      動作内容:エラー
  152.     //-----------------------------------------------------------------------
  153.     if(ERROR_SUCCESS != Ret)
  154.     {
  155.         return(1);
  156.     }
  157.  
  158.     return(0);
  159. }
  160. //---------------------------------------------------------------------------
  161. //  関数名:int yfRegistry::CloseKey(void)
  162. //  アクセス制限:
  163. //  入力:
  164. //        型:void
  165. //      名前:なし
  166. //      内容:なし
  167. //  出力:
  168. //        型:int
  169. //      返値:0
  170. //      内容:成功
  171. //      返値:1
  172. //      内容:設定失敗
  173. //  動作:
  174. //      内容:指定したキーを閉じる
  175. //
  176. //---------------------------------------------------------------------------
  177. int yfRegistry::CloseKey(void)
  178. {
  179.     //-----------------------------------------------------------------------
  180.     //  条件実行
  181.     //        条件式:NULL == RegKey
  182.     //      条件内容:作成されていない
  183.     //      動作内容:返す
  184.     //-----------------------------------------------------------------------
  185.     if (NULL == RegKey)
  186.     {
  187.          return(0);
  188.     }
  189.  
  190.        ::RegCloseKey(RegKey);
  191.     RegKey = NULL;
  192.  
  193.     return(0);
  194. }
  195. //---------------------------------------------------------------------------
  196. //---------------------------------------------------------------------------
  197. //      取得関係
  198. //---------------------------------------------------------------------------
  199. //---------------------------------------------------------------------------
  200. //  関数名:LPCTSTR yfRegistry::ReadString(LPCTSTR SubKey)
  201. //  アクセス制限:
  202. //  入力:
  203. //        型:LPCTSTR
  204. //      名前:SubKey
  205. //      内容:読みこむサブキー
  206. //  出力:
  207. //        型:LPCTSTR
  208. //      返値:NULL以外
  209. //      内容:レジストリ内容
  210. //      返値:_T("")
  211. //      内容:エラー
  212. //  動作:
  213. //      内容:レジストリから文字列を読み取る
  214. //
  215. //---------------------------------------------------------------------------
  216. LPCTSTR yfRegistry::ReadString(LPCTSTR SubKey)
  217. {
  218.     LONG Ret;
  219.     DWORD StrLength;
  220.     DWORD Type = REG_SZ;
  221.  
  222.     Ret = ::RegQueryValueEx(RegKey, SubKey, NULL, &Type, NULL, &StrLength);
  223.     //-----------------------------------------------------------------------
  224.     //  条件実行
  225.     //        条件式:ERROR_SUCCESS != Ret
  226.     //      条件内容:エラーの場合
  227.     //      動作内容:エラー
  228.     //-----------------------------------------------------------------------
  229.     if(ERROR_SUCCESS != Ret)
  230.     {
  231.         return(_T(""));
  232.     }
  233.  
  234.     delete[] StrBuffer;
  235.     StrBuffer = new TCHAR[StrLength];
  236.     ::RegQueryValueEx(RegKey, SubKey, NULL, &Type, (LPBYTE)StrBuffer, &StrLength);
  237.  
  238.     return(StrBuffer);
  239. }
  240. //---------------------------------------------------------------------------
  241. //---------------------------------------------------------------------------
  242.  
  243.