home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 November / PCWorld_2004-11_cd.bin / software / temacd / poweroff / pwroff30.exe / src / registry.c < prev    next >
C/C++ Source or Header  |  2001-11-12  |  4KB  |  191 lines

  1. #include "poweroff.h"
  2.  
  3. BOOLEAN WriteRegistryString(HKEY hive,char *key,char *subkey,char *value)
  4. {
  5.   HKEY hk;
  6.   DWORD dp,ret;
  7.   int sz;
  8.  
  9.   sz=strlen(value)+1;
  10.   if (RegCreateKeyEx(
  11.       hive,
  12.       key,
  13.       0,
  14.       "REG_SZ",
  15.       REG_OPTION_NON_VOLATILE,
  16.       KEY_WRITE,
  17.       NULL,
  18.       &hk,
  19.       &dp)!=ERROR_SUCCESS)
  20.     return FALSE;
  21.   if ((ret=RegSetValueEx(hk,subkey,0,REG_SZ,value,sz))!=ERROR_SUCCESS)
  22.   {
  23.     SetLastError(ret);
  24.     return FALSE;
  25.   }
  26.   RegCloseKey(hk);
  27.   return TRUE;
  28. }
  29.  
  30. BOOLEAN WriteRegistryBytes(HKEY hive,char *key,char *subkey,void *value,int sz)
  31. {
  32.   HKEY hk;
  33.   DWORD dp,ret;
  34.  
  35.   if (RegCreateKeyEx(
  36.       hive,
  37.       key,
  38.       0,
  39.       "REG_BINARY",
  40.       REG_OPTION_NON_VOLATILE,
  41.       KEY_WRITE,
  42.       NULL,
  43.       &hk,
  44.       &dp)!=ERROR_SUCCESS)
  45.     return FALSE;
  46.   if ((ret=RegSetValueEx(hk,subkey,0,REG_BINARY,(BYTE*)value,sz))!=ERROR_SUCCESS)
  47.   {
  48.     SetLastError(ret);
  49.     return FALSE;
  50.   }
  51.   RegCloseKey(hk);
  52.   return TRUE;
  53. }
  54.  
  55. BOOLEAN WriteRegistryInteger(HKEY hive,char *key,char *subkey,DWORD value)
  56. {
  57.   HKEY hk;
  58.   DWORD dp,ret;
  59.   int sz;
  60.  
  61.   sz=sizeof(DWORD);
  62.   if (RegCreateKeyEx(
  63.       hive,
  64.       key,
  65.       0,
  66.       "REG_DWORD",
  67.       REG_OPTION_NON_VOLATILE,
  68.       KEY_WRITE,
  69.       NULL,
  70.       &hk,
  71.       &dp)!=ERROR_SUCCESS)
  72.     return FALSE;
  73.   if ((ret=RegSetValueEx(hk,subkey,0,REG_DWORD,(BYTE*)&value,sz))!=ERROR_SUCCESS)
  74.   {
  75.     SetLastError(ret);
  76.     return FALSE;
  77.   }
  78.   RegCloseKey(hk);
  79.   return TRUE;
  80. }
  81.  
  82. BOOLEAN ReadRegistryString(HKEY hive,char *key,char *subkey,char *value,int sz)
  83. {
  84.   HKEY  hk;
  85.   DWORD type,ret;
  86.  
  87.   if (RegOpenKeyEx(
  88.       hive,
  89.       key,
  90.       0,
  91.       KEY_QUERY_VALUE,
  92.       &hk)!=ERROR_SUCCESS)
  93.   {
  94.     return FALSE;
  95.   }
  96.   if ((ret=RegQueryValueEx(hk,subkey,0,&type,value,&sz))!=ERROR_SUCCESS)
  97.   {
  98.     RegCloseKey(hk);
  99.     SetLastError(ret);
  100.     return FALSE;
  101.   }
  102.   RegCloseKey(hk);
  103.   return TRUE;
  104. }
  105.  
  106. BOOLEAN ReadRegistryInteger(HKEY hive,char *key,char *subkey,DWORD *value)
  107. {
  108.   HKEY  hk;
  109.   DWORD sz=sizeof(DWORD),type,ret;
  110.  
  111.   if (RegOpenKeyEx(
  112.       hive,
  113.       key,
  114.       0,
  115.       KEY_QUERY_VALUE,
  116.       &hk)!=ERROR_SUCCESS)
  117.   {
  118.     return FALSE;
  119.   }
  120.   if ((ret=RegQueryValueEx(hk,subkey,0,&type,(LPBYTE)value,&sz))!=ERROR_SUCCESS)
  121.   {
  122.     RegCloseKey(hk);
  123.     SetLastError(ret);
  124.     return FALSE;
  125.   }
  126.   RegCloseKey(hk);
  127.   return TRUE;
  128. }
  129.  
  130. BOOLEAN ReadRegistryShort(HKEY hive,char *key,char *subkey,short *value)
  131. {
  132.   HKEY  hk;
  133.   DWORD sz=sizeof(DWORD),type,tmpvalue,ret;
  134.  
  135.   if (RegOpenKeyEx(
  136.       hive,
  137.       key,
  138.       0,
  139.       KEY_QUERY_VALUE,
  140.       &hk)!=ERROR_SUCCESS)
  141.   {
  142.     return FALSE;
  143.   }
  144.   if ((ret=RegQueryValueEx(hk,subkey,0,&type,(LPBYTE)&tmpvalue,&sz))!=ERROR_SUCCESS)
  145.   {
  146.     RegCloseKey(hk);
  147.     SetLastError(ret);
  148.     return FALSE;
  149.   }
  150.   RegCloseKey(hk);
  151.   *value=(short)tmpvalue;
  152.   return TRUE;
  153. }
  154.  
  155. BOOLEAN DeleteRegistryValue(HKEY hive,char *key,char *subkey)
  156. {
  157.   HKEY  hk;
  158.   DWORD ret;
  159.  
  160.   if (RegOpenKeyEx(
  161.       hive,
  162.       key,
  163.       0,
  164.       KEY_SET_VALUE,
  165.       &hk)!=ERROR_SUCCESS)
  166.   {
  167.     return FALSE;
  168.   }
  169.   if ((ret=RegDeleteValue(hk,subkey))!=ERROR_SUCCESS)
  170.   {
  171.     RegCloseKey(hk);
  172.     SetLastError(ret);
  173.     return FALSE;
  174.   }
  175.   RegCloseKey(hk);
  176.   return TRUE;
  177. }
  178.  
  179. BOOLEAN DeleteRegistryKey(HKEY hive,char *key)
  180. {
  181.   DWORD ret;
  182.  
  183.   if ((ret=RegDeleteKey(hive,key))!=ERROR_SUCCESS)
  184.   {
  185.     SetLastError(ret);
  186.     return FALSE;
  187.   }
  188.   return TRUE;
  189. }
  190.  
  191.