Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+----------------------------------------------------------------------------
//
// File: nativecm.cpp
//
// Module: CMSETUP.LIB
//
// Synopsis: Implementation of the CmIsNative function.
//
// Copyright (c) 1999 Microsoft Corporation
//
// Author: quintinb Created 01/14/99
//
//+----------------------------------------------------------------------------
#include "cmsetup.h"
#include "reg_str.h"
//+----------------------------------------------------------------------------
//
// Function: CmIsNative
//
// Synopsis: This function Returns TRUE if CM is native to the current OS.
//
// Arguments: None
//
// Returns: BOOL - TRUE if CM is native.
//
// History: Created Header 1/17/99
// quintinb NTRAID 364533 -- Changed IsNative so that Win98 SE won't be
// considered Native even if CmNative is set to 1. See below
// and the bug for details.
//
//+----------------------------------------------------------------------------
BOOL CmIsNative() { static BOOL bCmNotNative = -1;
if (-1 == bCmNotNative) { const TCHAR* const c_pszRegCmNative = TEXT("CmNative"); HKEY hKey; DWORD dwCmNative;
ZeroMemory(&dwCmNative, sizeof(DWORD));
if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, c_pszRegCmAppPaths, 0, KEY_READ, &hKey)) { DWORD dwSize = sizeof(DWORD); DWORD dwType = REG_DWORD;
if (ERROR_SUCCESS == RegQueryValueEx(hKey, c_pszRegCmNative, NULL, &dwType, (LPBYTE)&dwCmNative, &dwSize)) { CPlatform cmplat;
if (cmplat.IsWin98Sr()) { //
// We no longer want Win98 SE to be native even though the key was set and
// CM is a system component. However, we may want to give ourselves an out
// someday so if CmNative is set to 2 on win98 SE we will still consider it Native.
// We hopefully will never need this but we might.
//
bCmNotNative = (2 != dwCmNative); } else { bCmNotNative = (dwCmNative ? 0 : 1); } } else { bCmNotNative = 1; } RegCloseKey(hKey); } else { bCmNotNative = 1; } }
return !bCmNotNative; }
|