windows-nt/Source/XPSP1/NT/base/ntsetup/opktools/factory/pid.c
2020-09-26 16:20:57 +08:00

79 lines
2 KiB
C

/****************************************************************************\
PID.C / Factory Mode (FACTORY.EXE)
Microsoft Confidential
Copyright (c) Microsoft Corporation 2002
All rights reserved
Source file for Factory that contains the Optional Components state
functions.
04/2002 - Stephen Lodwick (STELO)
Added this new source file for factory to be able to repopulate product
id and digital id if one is supplied in winbom.ini
\****************************************************************************/
//
// Include File(s):
//
#include "factoryp.h"
#include <licdll.h>
#include <licdll_i.c>
//
// Internal Define(s):
//
//
// External Function(s):
//
BOOL PidPopulate(LPSTATEDATA lpStateData)
{
BOOL bRet = TRUE;
TCHAR szBuffer[50] = NULLSTR;
ICOMLicenseAgent* pLicenseAgent;
// Check to see if the ProductKey key exists in the winbom
//
if ( GetPrivateProfileString( INI_SEC_WBOM_SETTINGS, INI_KEY_WBOM_PRODKEY, NULLSTR, szBuffer, AS(szBuffer), lpStateData->lpszWinBOMPath) &&
szBuffer[0] )
{
FacLogFileStr(3, _T("Attempting to reset Product Key: %s\n"), szBuffer);
if ( (SUCCEEDED(CoInitialize(NULL))) &&
(SUCCEEDED(CoCreateInstance(&CLSID_COMLicenseAgent, NULL, CLSCTX_INPROC_SERVER, &IID_ICOMLicenseAgent, (LPVOID *) &pLicenseAgent)))
)
{
if ( SUCCEEDED(pLicenseAgent->lpVtbl->SetProductKey(pLicenseAgent, szBuffer)) )
{
FacLogFileStr(3, _T("Successfully reset Product Key: %s\n"), szBuffer);
}
else
{
FacLogFileStr(3, _T("Failed to reset Product Key: %s\n"), szBuffer);
bRet = FALSE;
}
pLicenseAgent->lpVtbl->Release(pLicenseAgent);
}
else
{
FacLogFileStr(3, _T("Failed to reset Product Key: %s\n"), szBuffer);
bRet = FALSE;
}
CoUninitialize();
}
return bRet;
}