PackageTrack
Sign in Get early access

win32_registry

A modern, type-safe Dart API for accessing and managing the Windows Registry.

3.0.3 3.6M downloads/mo #175 most downloaded on pub.dev halildurmus/win32

What this package is like to depend on

Last release 4 months ago

11 Apr 2026

Release timing varies

gaps range from 5 weeks to 12 months

Most releases are documented

notes for 16 of 19 stable releases

Nothing withdrawn

no release was ever pulled

5 years old

19 releases · first in 2022

4 releases in the last 12 months

see the full history below

Release timeline

19 releases · Jan 2022 to Apr 2026
2023 2024 2025 2026
Release Pre-release

Releases

latest 19
  1. 3.0.3 11 Apr 2026
    Release notes

    3.0.3 - 2026-04-11

    📦 Dependencies

    • Lower minimum Dart SDK to 3.10
    Open source →
    Release notes

    📦 Dependencies

    • Lower minimum Dart SDK to 3.10
    Open source →
  2. 3.0.2 27 Feb 2026
    Release notes

    3.0.2 - 2026-04-11

    📦 Dependencies

    • Lower minimum Dart SDK to 3.10.
    Open source →
    Release notes

    🏠 Repository

    Open source →
  3. 3.0.1 26 Feb 2026
    Release notes

    📦 Dependencies

    • Allow package:meta versions from 1.17.0 up to but not including 2.0.0 to ensure compatibility with a wider range of Dart SDK versions.
    Open source →
  4. 3.0.0 22 Feb 2026
    Release notes

    🔄 Breaking Changes

    This release introduces a major overhaul of the API with improved type safety, and powerful new capabilities.

    The package now offers transaction support, enhanced monitoring, and a more intuitive interface for managing registry keys and values.

    Key breaking changes include:

    • API Restructuring:

      • Removed Registry class entirely. Static methods like Registry.openPath() are no longer available.
      • Removed RegistryHive enum. Use predefined top-level fields instead:
        • RegistryHive.localMachineLOCAL_MACHINE
        • RegistryHive.currentUserCURRENT_USER
        • RegistryHive.classesRootCLASSES_ROOT
        • RegistryHive.allUsersUSERS
        • RegistryHive.performanceDataPERFORMANCE_DATA
        • RegistryHive.currentConfigCURRENT_CONFIG
    • AccessRightsRegistryAccess:

      • Replaced enum with a final class offering bitwise combination support.
      • Renamed constants:
        • readOnlyread
        • writeOnlywrite
        • allAccessall
      • Added new access rights: notify, readWrite
      • Supports combining access rights with the | operator.
    • RegistryKey:

      • Opening and creating keys now requires calling methods on predefined constants or existing keys:
        • Old: Registry.openPath(RegistryHive.localMachine, path: keyPath)
        • New: LOCAL_MACHINE.open(keyPath)
      • Renamed methods:
        • getBinaryValue()getBinary()
        • getIntValue()getInt()
        • getStringValue()getString()
        • getStringArrayValue()getMultiString()
        • createKey()create()
        • deleteKey()removeSubkey()
        • deleteValue()removeValue()
        • renameSubkey()rename()
      • create() and open() now accept a RegistryOpenConfig parameter for fine-grained control of access rights, options, and transactions.
      • onChanged() stream functionality replaced with RegistryChangeMonitor class.
    • RegistryValue:

      • Constructors no longer accept a name parameter. Value names are now passed directly to setValue():
        • Old: RegistryValue.string('MyValue', 'data')
        • New: key.setValue('MyValue', RegistryValue.string('data')) or with dot shorthand syntax: key.setValue('MyValue', const .string('data'))
      • Renamed factory constructors:
        • int32()dword()
        • int64()qword()
        • stringArray()multiString()
    • RegistryValueType:

      • Changed from enum to final class with a factory constructor.
      • Renamed constants:
        • int32dword
        • int64qword
        • stringArraymultiString
      • Renamed field: valueraw
      • Replaced fromWin32() factory with fromRaw().

    🚀 Features

    • Transaction Support:

      • New Transaction class enables atomic registry operations.
      • Pass a Transaction instance via RegistryOpenConfig to perform multiple operations that can be committed or rolled back as a unit.
    • Enhanced Registry Monitoring:

      • New RegistryChangeMonitor class provides isolate-backed, stream-based monitoring of registry key changes.
      • Replaces the previous onChanged() stream approach with more robust error handling and resource management.
    • Configuration Objects:

      • RegistryOpenConfig: Centralizes parameters for opening and creating keys (access rights, creation behavior, options, transactions).
      • RegistryOpenOptions: Type-safe wrapper for native registry options (nonVolatile, volatile, createLink, backupRestore, etc.).
    • New Key Management Methods:

      • removeTree(): Recursively deletes all subkeys and values within a key without deleting the key itself.
      • removeValues(): Deletes all values under a key without affecting subkeys.

    📦 Dependencies

    • Bumped minimum required Dart SDK version to 3.11.0.
    Open source →
  5. 2.1.0 19 Feb 2025
    Release notes

    📦 Dependencies

    • Bump win32 from 5.8.0 to 5.11.0 by @halildurmus in #30

    🎨 Styling

    • Format with tall-style by @halildurmus in #29
    Open source →
  6. 2.0.1 10 Dec 2024
    Release notes

    🐛 Bug Fixes

    • Export RegistryKeyInfo class - (d73d0b0)
    • Export AccessRights enum (#26) - (207b812)
    Open source →
  7. 2.0.0 02 Nov 2024
    Release notes

    This release introduces significant changes to the API with a streamlined structure, new methods for specific registry data handling, and enhanced support for monitoring registry key changes.

    🔄 Breaking Changes

    • AccessRights:

      • win32Value field renamed to value.
    • Registry:

      • Now an abstract final class.
      • Removed performanceData static getter.
    • RegistryHive:

      • Constructor is now private.
      • win32Value field renamed to value.
    • RegistryKey:

      • Now a final class.
    • RegistryValue:

      • Now a sealed class.
      • Removed fromWin32 factory constructor.
      • Removed toWin32 getter.
      • Removed data field.
    • RegistryValueType:

      • Constructor is now private.
      • win32Value field renamed to value.
      • Removed unknown value.
      • Removed win32Type getter.

    ✨ New Features

    • Registry Hive Construction:

      • Added RegistryHive.fromWin32 factory constructor for creating hives based on Win32 constants.
    • Enhanced Data Retrieval:

      • Added type-specific methods to RegistryKey: getBinaryValue, getIntValue, getStringValue, and getStringArrayValue for retrieving data in specific formats.
      • Deprecated getValueAsInt and getValueAsString methods in favor of the new type-specific methods.
    • Registry Change Notifications:

      • Introduced RegistryKey.onChanged stream for monitoring registry key changes, with optional subkey tracking.
    • Typed Registry Values:

      • Introduced specialized subclasses in RegistryValue for each registry value type, enhancing clarity and simplifying data handling.
    • Registry Value Type Construction:

      • Added RegistryValueType.fromWin32 factory constructor to handle value type creation based on Win32 constants.

    🚨 Dart SDK Requirement

    • Bumped the minimum required Dart SDK version to 3.5.0.
    Open source →
  8. 1.1.5 13 Sep 2024
    Release notes
    • Fix issue where creating REG_SZ or REG_EXPANDED_SZ string registry values resulted in malformed data. The null terminator for string values was incorrectly encoded as a single byte instead of the required two bytes for UTF-16 encoding (#22, thanks to @dancarrollg).
    Open source →
  9. 1.1.4 28 Jul 2024
    Release notes
    • Fix issue where RegistryValue.data for binary-type registry values might be freed before being read (#19, thanks @tylerlacey).
    • Bump minimum required Dart SDK version to 3.4.0
    Open source →
  10. 1.1.3 14 Apr 2024
    Release notes
    • Fix deprecation warnings
    • Update links
    • Bump minimum required Dart SDK version to 3.3.0
    Open source →
  11. 1.1.2 18 Sep 2023
    Release notes
    • Improved code quality.
    • Improved documentation.
    Open source →
  12. 1.1.1 11 May 2023
    Release notes
    • Update dependency constraints.
    Open source →
  13. 1.1.0 07 Mar 2023
    Release notes
    • Add recursive named option to method deleteKey() of RegistryKey (thanks @Zekfad)
    • Use enhanced enums from Dart 2.17.
    • Update dependency constraints.
    Open source →
  14. 1.0.2 08 Aug 2022
    Release notes
    • Update ffi dependency constraints to >=1.1.2 <3.0.0.
    Open source →
  15. 1.0.1 13 May 2022
    Release notes
    • Minor tweaks to documentation.
    Open source →
  16. 1.0.0 06 May 2022
    Release notes
    • First stable release.
    Open source →
  17. 0.1.2 17 Jan 2022

    Nothing published for this version

  18. 0.1.1 17 Jan 2022

    Nothing published for this version

  19. 0.1.0 17 Jan 2022

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive