|
|
//-----------------------------------------------------------------------//
//
// File: export.cpp
// Created: April 1997
// By: Zeyong Xu
// Purpose: Support EXPORT and IMPORT .reg file
//
//------------------------------------------------------------------------//
#include "stdafx.h"
#include <regeditp.h>
#include "reg.h"
extern UINT g_FileErrorStringID;
//-----------------------------------------------------------------------
//
// ExportRegFile()
//
//-----------------------------------------------------------------------
LONG ExportRegFile(PAPPVARS pAppVars, UINT argc, TCHAR *argv[]) { LONG nResult; HKEY hKey;
//
// Parse the cmd-line
//
nResult = ParseExportCmdLine(pAppVars, argc, argv); if(nResult != ERROR_SUCCESS) return nResult;
//
// check if the key existed
//
nResult = RegOpenKeyEx(pAppVars->hRootKey, pAppVars->szSubKey, 0, KEY_READ, &hKey);
if(nResult == ERROR_SUCCESS) { RegCloseKey(hKey);
nResult = RegExportRegFile(NULL, TRUE, pAppVars->bNT4RegFile, pAppVars->szValueName, pAppVars->szFullKey); }
return nResult; }
//------------------------------------------------------------------------
//
// ParseCmdLine()
//
//------------------------------------------------------------------------
REG_STATUS ParseExportCmdLine(PAPPVARS pAppVars, UINT argc, TCHAR *argv[]) { REG_STATUS nResult = ERROR_SUCCESS;
//
// Do we have a *valid* number of cmd-line params
//
if (argc < 4) { return REG_STATUS_TOFEWPARAMS; } else if (argc > 5) { return REG_STATUS_TOMANYPARAMS; }
// Machine Name and Registry key
//
nResult = BreakDownKeyString(argv[2], pAppVars); if(nResult != ERROR_SUCCESS) return nResult;
// current, not remotable
if(pAppVars->bUseRemoteMachine) return REG_STATUS_NONREMOTABLE;
//
// Get the FileName - using the szValueName string field to hold it
//
pAppVars->szValueName = (TCHAR*) calloc(_tcslen(argv[3]) + 1, sizeof(TCHAR)); _tcscpy(pAppVars->szValueName, argv[3]);
#ifdef REG_FOR_WIN2000
//
// option params
//
if(argc == 4) return nResult; if( argc == 5 && !_tcsicmp(argv[4], _T("/nt4"))) { pAppVars->bNT4RegFile = TRUE; } else nResult = REG_STATUS_INVALIDPARAMS; #else
pAppVars->bNT4RegFile = TRUE; if(argc > 4) nResult = REG_STATUS_TOMANYPARAMS;
#endif
return nResult; }
//-----------------------------------------------------------------------
//
// ImportRegFile()
//
//-----------------------------------------------------------------------
LONG ImportRegFile(PAPPVARS pAppVars, UINT argc, TCHAR *argv[]) { LONG nResult;
//
// Parse the cmd-line
//
nResult = ParseImportCmdLine(pAppVars, argc, argv); if(nResult == ERROR_SUCCESS) { nResult = RegImportRegFile(NULL, TRUE, pAppVars->szValueName); } if(nResult != ERROR_SUCCESS) { if ( g_FileErrorStringID == IDS_IMPFILEERRSUCCESS || nResult == ERROR_FILE_NOT_FOUND) nResult = REG_STATUS_BADFILEFORMAT; }
return nResult; }
//------------------------------------------------------------------------
//
// ParseCmdLine()
//
//------------------------------------------------------------------------
REG_STATUS ParseImportCmdLine(PAPPVARS pAppVars, UINT argc, TCHAR *argv[]) { REG_STATUS nResult = ERROR_SUCCESS;
//
// Do we have a valid number of cmd-line params
//
if (argc < 3) { return REG_STATUS_TOFEWPARAMS; } else if (argc > 3) { return REG_STATUS_TOMANYPARAMS; }
//
// Get the FileName - using the szValueName string field to hold it
//
pAppVars->szValueName = (TCHAR*) calloc(_tcslen(argv[2]) + 1, sizeof(TCHAR));
if( pAppVars->szValueName ) { _tcscpy(pAppVars->szValueName, argv[2]); } else { nResult = ERROR_INSUFFICIENT_BUFFER; } return nResult; }
|