|
|
/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
rtrenval.c
Abstract:
NT level registry api test program, basic non-error paths.
Rename a key value entry.
rtrenval <KeyPath> <old value entry name> <new value entry name>
Example:
rtrenval \REGISTRY\MACHINE\TEST\bigkey apple banana
Author:
Bryan Willman (bryanwi) 26-Feb-92
Revision History:
--*/
#include "cmp.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define WORK_SIZE 1024
void __cdecl main(int, char *); void processargs();
void Delete( HANDLE Handle );
UNICODE_STRING WorkName; WCHAR workbuffer[WORK_SIZE];
UNICODE_STRING ValueName; WCHAR valuebuffer[WORK_SIZE];
UNICODE_STRING NewValueName; WCHAR newvaluebuffer[WORK_SIZE];
void __cdecl main( int argc, char *argv[] ) { NTSTATUS status; OBJECT_ATTRIBUTES ObjectAttributes; HANDLE BaseHandle;
//
// Process args
//
WorkName.MaximumLength = WORK_SIZE; WorkName.Length = 0L; WorkName.Buffer = &(workbuffer[0]);
ValueName.MaximumLength = WORK_SIZE; ValueName.Length = 0L; ValueName.Buffer = &(valuebuffer[0]);
NewValueName.MaximumLength = WORK_SIZE; NewValueName.Length = 0L; NewValueName.Buffer = &(newvaluebuffer[0]);
processargs(argc, argv);
//
// Set up and open KeyPath
//
printf("rtrenval: starting\n");
InitializeObjectAttributes( &ObjectAttributes, &WorkName, 0, (HANDLE)NULL, NULL ); ObjectAttributes.Attributes |= OBJ_CASE_INSENSITIVE;
status = NtOpenKey( &BaseHandle, KEY_SET_VALUE, &ObjectAttributes ); if (!NT_SUCCESS(status)) { printf("rtrenval: t0: %08lx\n", status); exit(1); }
NtRenameValueKey( BaseHandle, &ValueName, &NewValueName, 42 );
if (!NT_SUCCESS(status)) { printf("rtrenval: t1: %08lx\n", status); exit(1); }
NtClose(BaseHandle); exit(0); }
void processargs( int argc, char *argv[] ) { ANSI_STRING temp;
if ( (argc != 4) ) { printf("Usage: %s <KeyPath> <old value entry name> <new value entry name>\n", argv[0]); exit(1); }
RtlInitAnsiString( &temp, argv[1] );
RtlAnsiStringToUnicodeString( &WorkName, &temp, TRUE );
RtlInitAnsiString( &temp, argv[2] );
RtlAnsiStringToUnicodeString( &ValueName, &temp, TRUE );
RtlInitAnsiString( &temp, argv[3] );
RtlAnsiStringToUnicodeString( &NewValueName, &temp, TRUE );
return; }
|