REGUTIL.C
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. //THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. //ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. //THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright  1994-1997  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. //  FILE:
  9. //    REGUTIL.C
  10. //
  11. //  PURPOSE:
  12. //    Registry access functions.
  13. //
  14. //  PLATFORMS:
  15. //    Windows 95, Windows NT
  16. //
  17. //  SPECIAL INSTRUCTIONS: N/A
  18. //
  19. // Windows Header Files:
  20. #pragma warning(disable:4001)   // Single-line comment warnings
  21. #pragma warning(disable:4115)   // Named type definition in parentheses
  22. #pragma warning(disable:4201)   // Nameless struct/union warning
  23. #pragma warning(disable:4214)   // Bit field types other than int warnings
  24. #pragma warning(disable:4514)   // Unreferenced inline function has been removed
  25. // Windows Header Files:
  26. #include <Windows.h>
  27. #include <WindowsX.h>
  28. // Restore the warnings--leave the single-line comment warning OFF
  29. #pragma warning(default:4115)   // Named type definition in parentheses
  30. #pragma warning(default:4201)   // Nameless struct/union warning
  31. #pragma warning(default:4214)   // Bit field types other than int warnings
  32. // C RunTime Header Files
  33. // Local Header Files
  34. // local definitions
  35. // default settings
  36. // external functions
  37. // external data
  38. // public data
  39. // private data
  40. // public functions
  41. //////////////////////////////////////////////////////////////////////////
  42. //  Function:  GetRegistryString
  43. //
  44. //  Description:
  45. //    Retrieves the string associated with the specified key in the registry.
  46. //
  47. //  Parameters:
  48. //    @@@
  49. //
  50. //  Returns:
  51. //    LPTSTR   Pointer to registry string.  NULL upon failure.
  52. //
  53. //  Comments:
  54. //
  55. //
  56. //////////////////////////////////////////////////////////////////////////
  57. LPTSTR GetRegistryString(HKEY hKeyClass, LPTSTR lpszSubKey, LPTSTR lpszValueName)
  58. {
  59.     // Local variables
  60.     HKEY          hKey;                 // Registry key
  61.     LPTSTR         lpszKeyValue;         // Buffer for key name
  62.     DWORD         dwKeySize;            // Size of key value
  63.     DWORD         dwKeyDataType;        // Type of data stored in key
  64.     LONG          lRC;                  // Return code
  65.     //  Initialize variables
  66.     dwKeyDataType = 0;
  67.     dwKeySize = 0;
  68.     hKey = NULL;
  69.     lRC = RegOpenKey(hKeyClass, lpszSubKey, &hKey);
  70.     if (lRC != ERROR_SUCCESS)
  71.     {
  72.         return(NULL);
  73.     }
  74.     // Got key, get value.  First, get the size of the key.
  75.     lRC = RegQueryValueEx(hKey, lpszValueName, NULL, NULL, NULL, &dwKeySize);
  76.     if (lRC != ERROR_SUCCESS)
  77.     {
  78.         return(NULL);
  79.     }
  80.     if (dwKeySize <= 1)  // Registry will return "" if no printers installed
  81.     {
  82.         return(NULL);
  83.     }
  84.     lpszKeyValue = GlobalAlloc(GPTR, (++dwKeySize));
  85.     if (lpszKeyValue == NULL)
  86.     {
  87.         return(NULL);
  88.     }
  89.     lRC = RegQueryValueEx(hKey, lpszValueName, NULL, &dwKeyDataType, (LPBYTE)lpszKeyValue, &dwKeySize);
  90.     return(lpszKeyValue);
  91. }   // End of function GetRegistryString