Windows Native Toolkit

Configuration Library

Wildcard config values, arrays, encryption, asset paths, and config file utilities for Unreal projects.

Use this library to read and write Unreal config files with wildcard Blueprint pins, native config arrays, encrypted strings, and path-safe config file utilities.

Want Advanced Config Features?

Configuration Toolkit is a dedicated plugin for advanced Unreal config management, supporting wildcards, encryption, and cross-platform workflows.

View on Fab

Project Settings

Configure config-file behavior in Project Settings > Plugins > Windows Native Toolkit, under the Config Files category.

Windows Native Toolkit Project Settings - Config Files

File Name Behavior

Most nodes expose an optional File Name pin.

File NameResult
EmptyUses the default file name from WNT config settings.
GameResolves Unreal's generated Game.ini.
EngineResolves Unreal's generated Engine.ini.
Profiles/UserAResolves under Unreal's generated config directory and appends .ini if needed.
Absolute .ini pathUses that exact file path.
Typical Editor Output
Saved/Config/WindowsEditor/
Typical Packaged Output
Saved/Config/Windows/

Write Config Value

FieldDetails
PurposeWrites one Blueprint value to a config key. The Value pin is a wildcard pin, so the connected pin type controls serialization.
Givesbool return value
NeedsSection, Key, Value, File Name.
C++ Equivalent
FString SerializedValue = TEXT("600.0");
GConfig->SetString(TEXT("Player"), TEXT("Speed"), *SerializedValue, GGameIni);
GConfig->Flush(false, GGameIni);

Read Config Value

FieldDetails
PurposeReads one config key back into the connected wildcard output pin type.
Givesbool return value; output pin(s) Value
NeedsSection, Key, Value, File Name.
C++ Equivalent
FString SerializedValue;
if (GConfig->GetString(TEXT("Player"), TEXT("Speed"), SerializedValue, GGameIni))
{
    const float Speed = FCString::Atof(*SerializedValue);
}

Write Config Array

FieldDetails
PurposeWrites a Blueprint array using Unreal's native repeated config key format.
Givesbool return value
NeedsSection, Key, Values, File Name.
C++ Example
TArray<FString> Items = { TEXT("Sword"), TEXT("Shield") };
GConfig->SetArray(TEXT("Inventory"), TEXT("Items"), Items, GGameIni);
GConfig->Flush(false, GGameIni);

Read Config Array

FieldDetails
PurposeReads a native config array back into the connected Blueprint array type.
Givesbool return value; output pin(s) Values
NeedsSection, Key, Values, File Name.
C++ Example
TArray<FString> Items;
const int32 Count = GConfig->GetArray(TEXT("Inventory"), TEXT("Items"), Items, GGameIni);

Add Unique To Config Array

FieldDetails
PurposeAdds one value to a config array only if an equivalent serialized value does not already exist.
Givesbool return value
NeedsSection, Key, Value, File Name.
C++ Example
TArray<FString> Items;
GConfig->GetArray(TEXT("Inventory"), TEXT("Items"), Items, GGameIni);
Items.AddUnique(TEXT("Potion"));
GConfig->SetArray(TEXT("Inventory"), TEXT("Items"), Items, GGameIni);
GConfig->Flush(false, GGameIni);

Remove From Config Array

FieldDetails
PurposeRemoves all matching values from a config array.
Givesbool return value
NeedsSection, Key, Value, File Name.
C++ Example
TArray<FString> Items;
GConfig->GetArray(TEXT("Inventory"), TEXT("Items"), Items, GGameIni);
Items.Remove(TEXT("Potion"));
GConfig->SetArray(TEXT("Inventory"), TEXT("Items"), Items, GGameIni);
GConfig->Flush(false, GGameIni);

Write Encrypted String

FieldDetails
PurposeEncrypts one string with the AES key from WNT config settings and stores it as Base64 text.
Givesbool return value
NeedsSection, Key, Value, File Name.
C++ Example
const bool bSuccess = UConfigurationLibrary::WriteEncryptedString(TEXT("Auth"), TEXT("Token"), TEXT("SecretValue"), TEXT("Game"));

Read Encrypted String

FieldDetails
PurposeReads a Base64 config value and decrypts it with the AES key from WNT config settings.
Givesbool return value; output pin(s) Value
NeedsSection, Key, Value, File Name.
C++ Example
FString Value;
const bool bSuccess = UConfigurationLibrary::ReadEncryptedString(TEXT("Auth"), TEXT("Token"), Value, TEXT("Game"));

Convert Asset To Path

FieldDetails
PurposeConverts an asset object reference to a soft object path string without loading anything new.
GivesFString return value
NeedsAsset.
C++ Example
const FString Path = UConfigurationLibrary::ConvertAssetToPath(Asset);

Convert Class To Path

FieldDetails
PurposeConverts a class reference to a soft class path string.
GivesFString return value
NeedsClass.
C++ Example
const FString Path = UConfigurationLibrary::ConvertClassToPath(ActorClass);

Convert Path To Asset

FieldDetails
PurposeConverts a path string to a soft asset reference without loading the asset.
Givesbool return value; output pin(s) Asset
NeedsPath, Asset.
C++ Example
TSoftObjectPtr<UObject> Asset;
const bool bSuccess = UConfigurationLibrary::ConvertPathToSoftAssetReference(TEXT("/Game/UI/WBP_Menu.WBP_Menu"), Asset);

Convert Path To Class

FieldDetails
PurposeConverts a path string to a soft class reference without loading the class.
Givesbool return value; output pin(s) Class
NeedsPath, Class.
C++ Example
TSoftClassPtr<UObject> Class;
const bool bSuccess = UConfigurationLibrary::ConvertPathToSoftClassReference(TEXT("/Game/BP/BP_Enemy.BP_Enemy_C"), Class);

Clear Config Key

FieldDetails
PurposeRemoves one scalar key or all repeated array entries for that key.
Givesbool return value
NeedsSection, Key, File Name.
C++ Example
const bool bSuccess = UConfigurationLibrary::ClearConfigKey(TEXT("Player"), TEXT("Speed"), TEXT("Game"));

Clear Config Section

FieldDetails
PurposeRemoves every key from one config section.
Givesbool return value
NeedsSection, File Name.
C++ Example
const bool bSuccess = UConfigurationLibrary::ClearConfigSection(TEXT("Player"), TEXT("Game"));

Remove Config Section

FieldDetails
PurposeRemoves a whole section and all keys stored inside it.
Givesbool return value
NeedsSection, File Name.
C++ Example
const bool bSuccess = UConfigurationLibrary::RemoveConfigSection(TEXT("Player"), TEXT("Game"));

Delete Config File

FieldDetails
PurposeDeletes a generated project config file and unloads it from GConfig when possible.
Givesbool return value
NeedsFile Name.
C++ Example
const bool bSuccess = UConfigurationLibrary::DeleteConfigFile(TEXT("Profiles/UserA"));

Does Config Key Exist

FieldDetails
PurposeChecks whether a key exists in a config file. Leave Section empty to search every section in the file.
Givesbool return value
NeedsSection, Key, File Name.
C++ Example
const bool bExists = UConfigurationLibrary::DoesConfigKeyExist(TEXT("Player"), TEXT("Speed"), TEXT("Game"));

Does Config File Exist

FieldDetails
PurposeChecks whether the resolved config file exists on disk.
Givesbool return value
NeedsFile Name.
C++ Example
const bool bExists = UConfigurationLibrary::DoesConfigFileExist(TEXT("Game"));

Get Config Sections

FieldDetails
PurposeReturns every section name currently known for the resolved config file.
GivesTArray<FString> return value
NeedsFile Name.
C++ Example
const TArray<FString> Sections = UConfigurationLibrary::GetConfigSections(TEXT("Game"));

Flush Config

FieldDetails
PurposeForces the resolved config file to flush from GConfig to disk.
Givesbool return value
NeedsFile Name.
C++ Example
const bool bSuccess = UConfigurationLibrary::FlushConfig(TEXT("Game"));

Notes

  • Write Config Value and Read Config Value are Blueprint wildcard nodes. In native C++, use GConfig directly when you need exact typed serialization logic.
  • Soft object and soft class reads do not load assets. Use Unreal's async loading nodes when you need the loaded object or class.
  • Encrypted string nodes require a 32-character, 32-byte AES key in Project Settings > Plugins > Windows Native Toolkit, under Config Files.
  • For generated configs on UE 5.4+, make sure the target file allows saving sections when you expect writes to persist.

Last updated on

On this page