Source code of Windows XP (NT5)
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: RenameComputer.cpp
Comments: Implementation of COM object to change the name of a computer. This must be run locally on the computer to be renamed.
(c) Copyright 1999, Mission Critical Software, Inc., All Rights Reserved Proprietary and confidential to Mission Critical Software, Inc.
REVISION LOG ENTRY Revision By: Christy Boles Revised on 02/15/99 11:22:41
--------------------------------------------------------------------------- */
// RenameComputer.cpp : Implementation of CRenameComputer
#include "stdafx.h"
#include "WorkObj.h"
#include "Rename.h"
#include "Common.hpp"
#include "UString.hpp"
#include "EaLen.hpp"
#include <lm.h>
#include "TReg.hpp"
/////////////////////////////////////////////////////////////////////////////
// CRenameComputer
STDMETHODIMP CRenameComputer::RenameLocalComputer(BSTR NewName) { HRESULT hr = S_OK; WCHAR * newNameW = (WCHAR*)NewName; WCHAR nameW[LEN_Computer]; DWORD rc = 0;
if ( newNameW[0] == L'\\' ) { safecopy(nameW,newNameW+2); } else { safecopy(nameW,newNameW); } // convert the name to uppercase
for ( int i = 0 ; nameW[i] ; i++ ) { nameW[i] = towupper(nameW[i]); }
if ( ! m_bNoChange ) { if ( ! SetComputerName(nameW) ) { DWORD rc = GetLastError(); hr = HRESULT_FROM_WIN32(rc); } else { // Set the host name or the NVHostname value as required
LPWKSTA_INFO_100 pBuf = NULL; rc = NetWkstaGetInfo(NULL, 100, (LPBYTE*)&pBuf); if( !rc ) { TRegKey network(L"System\\CurrentControlSet\\Services\\Tcpip\\Parameters");
if ( pBuf->wki100_ver_major < 5 ) rc = network.ValueSetStr(L"Hostname", nameW); else rc = network.ValueSetStr(L"NVHostname", nameW);
if ( rc ) hr = HRESULT_FROM_WIN32(GetLastError()); NetApiBufferFree(pBuf); } else hr = HRESULT_FROM_WIN32(GetLastError()); } } return hr; }
STDMETHODIMP CRenameComputer::get_NoChange(BOOL *pVal) { (*pVal) = m_bNoChange; return S_OK; }
STDMETHODIMP CRenameComputer::put_NoChange(BOOL newVal) { m_bNoChange = newVal; return S_OK; }
|