// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. #pragma once struct FRegistryValue { uint32 Type; TArray Data; FRegistryValue(); void Set(const FString &NewValue); void Set(uint32 NewValue); bool Read(HKEY hKey, const FString &Name); bool Write(HKEY hKey, const FString &Name) const; bool IsUpToDate(HKEY hKey, const FString &Name) const; }; struct FRegistryKey : FNoncopyable { TMap Keys; TMap Values; FRegistryKey(); ~FRegistryKey(); FRegistryKey *FindOrAddKey(const FString &Name); FRegistryValue *FindOrAddValue(const FString &Name); void SetValue(const FString &Name, const FString &Value); void SetValue(const FString &Name, uint32 Value); bool Read(HKEY hKey); bool Read(HKEY hKey, const FString &Path); bool Write(HKEY hKey, bool bRemoveDifferences) const; bool Write(HKEY hKey, const FString &Path, bool bRemoveDifferences) const; bool IsUpToDate(HKEY hKey, bool bRemoveDifferences) const; bool IsUpToDate(HKEY hKey, const FString &Path, bool bRemoveDifferences) const; }; struct FRegistryRootedKey { HKEY hRootKey; FString Path; TScopedPointer Key; FRegistryRootedKey(HKEY hInKeyRoot, const FString &InPath); bool Exists() const; bool Read(); bool Write(bool bRemoveDifferences) const; bool IsUpToDate(bool bRemoveDifferences) const; }; bool EnumerateRegistryKeys(HKEY hKey, TArray &OutNames); bool EnumerateRegistryValues(HKEY hKey, TArray &OutNames);