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.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 2000-2002.
//
// File: PolicyKey.cpp
//
// Contents: Implementation of CPolicyKey
//
//----------------------------------------------------------------------------
#include "stdafx.h"
#include <gpedit.h>
#include "PolicyKey.h"
#ifdef _DEBUG
#ifndef ALPHA
#define new DEBUG_NEW
#endif
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
CPolicyKey::CPolicyKey (IGPEInformation* pGPEInformation, PCWSTR pszKey, bool fIsMachineType) : m_hKeyGroupPolicy (0), m_hSubKey (0) { ASSERT (pszKey); if ( pGPEInformation ) { HRESULT hr = pGPEInformation->GetRegistryKey ( fIsMachineType ? GPO_SECTION_MACHINE : GPO_SECTION_USER, &m_hKeyGroupPolicy); ASSERT (SUCCEEDED (hr)); if ( SUCCEEDED (hr) ) { if ( pszKey && pszKey[0] ) { DWORD dwDisposition = 0; LONG lResult = ::RegCreateKeyEx (m_hKeyGroupPolicy, // handle of an open key
pszKey, // address of subkey name
0, // reserved
L"", // address of class string
REG_OPTION_NON_VOLATILE, // special options flag
// security review 2/22/2002 BryanWal ok - needed for deletion
KEY_ALL_ACCESS, // desired security access
NULL, // address of key security structure
&m_hSubKey, // address of buffer for opened handle
&dwDisposition); // address of disposition value buffer
ASSERT (lResult == ERROR_SUCCESS); if ( lResult != ERROR_SUCCESS ) { _TRACE (0, L"RegCreateKeyEx (%s) failed: %d\n", pszKey, lResult); } } } else { _TRACE (0, L"IGPEInformation::GetRegistryKey (%s) failed: 0x%x\n", fIsMachineType ? L"GPO_SECTION_MACHINE" : L"GPO_SECTION_USER", hr); } } }
CPolicyKey::~CPolicyKey () { if ( m_hSubKey ) ::RegCloseKey (m_hSubKey);
if ( m_hKeyGroupPolicy ) ::RegCloseKey (m_hKeyGroupPolicy); }
HKEY CPolicyKey::GetKey () const { if (m_hSubKey) return m_hSubKey; else { return m_hKeyGroupPolicy; } }
|