Skip to main content

Interact with .sdb (application compatibility shim database) files

Project description

sdbtool

A tool for converting Microsoft Application Compatibility Database (SDB) files to XML format.


PyPI - Version PyPI - License PyPI - Python Version
CI Publish Python Package codecov

Table of Contents

  1. Features
  2. Getting Started
  3. Contributing

Features

  • Parses SDB files used by Windows for application compatibility.
  • Converts SDB data into readable XML or JSON format.
  • Dump file attributes in SDB-recognizable format
  • Useful for analysis, migration, or documentation.
  • Pure Python and cross-platform - no native apphelp.dll dependency.

Getting Started

Installation

Sdbtool is available as sdbtool on PyPI.

Invoke sdbtool directly with uvx:

uvx sdbtool sdb2xml your.sdb                        # Convert the file 'your.sdb' to xml, and print it to the console
uvx sdbtool sdb2xml your.sdb --output your.xml      # Convert the file 'your.sdb' to xml, and write it to 'your.xml'
uvx sdbtool sdb2json your.sdb                       # Convert the file 'your.sdb' to json, and print it to the console
uvx sdbtool sdb2json your.sdb --output your.json    # Convert the file 'your.sdb' to json, and write it to 'your.json'
uvx sdbtool sdb2xml old.sdb --target-os 0501        # Resolve tag names as of Windows XP (for older databases)
uvx sdbtool attributes your.exe                     # Show the file attributes as recognized by apphelp in an XML-friendly format
uvx sdbtool info your.sdb                           # Show some details about the SDB file (version, description, ...)

Or install sdbtool with uv (recommended), pip, or pipx:

# With uv.
uv tool install sdbtool@latest  # Install sdbtool globally.

# With pip.
pip install sdbtool

# With pipx.
pipx install sdbtool

Updating an installed sdbtool to the latest version with uv:

# With uv.
uv tool upgrade sdbtool

# With pip.
pip install --upgrade sdbtool

# With pipx.
pipx upgrade sdbtool

Tag names and --target-os

Tag names are not constant across Windows versions: some are renamed (e.g. OS_PLATFORM became GUEST_TARGET_PLATFORM), and some are dropped (e.g. OS_SKU exists on XP but not on Windows 11). sdb2xml / sdb2json therefore accept --target-os <VERSION> to resolve names as of a particular Windows release; without it, names are resolved against the newest known table. An unknown tag is rendered as InvalidTag_0xXXXX.

RUNTIME_PLATFORM (0x4021)

The tag id 0x4021 has two unrelated encodings depending on the database version:

  • Version 3 (Windows 10+): one DB-level tag holding a (guest, host) architecture pair bitmask (RuntimePlatformType, e.g. AMD64 | X86_ON_AMD64).
  • Version 2 (Vista..Windows 8.1): a per-entry tag holding a little-endian list of up to three host-platform selector bytes (0x40 | code), OR-combined, with bit 0x80000000 negating the match (RuntimePlatformV2Type). Codes: 0=X86, 9=AMD64, 6=IA64, 12=WOW64 (any 32-bit-on-64-bit), 13=NATIVE64 (any native 64-bit). Reversed from SdbpCheckRuntimePlatform in pre-Win10 apphelp.dll; e.g. 0x4D4C40 -> X86 | WOW64 | NATIVE64.

sdbtool decodes each form according to the file's header major version.

Contributing

Contributions are welcome! Please open issues or submit pull requests.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sdbtool-0.9.4.tar.gz (29.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sdbtool-0.9.4-py3-none-any.whl (38.3 kB view details)

Uploaded Python 3

File details

Details for the file sdbtool-0.9.4.tar.gz.

File metadata

  • Download URL: sdbtool-0.9.4.tar.gz
  • Upload date:
  • Size: 29.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sdbtool-0.9.4.tar.gz
Algorithm Hash digest
SHA256 1a06d4fd155f068fec432617beaf34b002e1def8f08afa2be62f8303168d42be
MD5 0094567dff6bdf2c199c63d264b07e88
BLAKE2b-256 a84aaebc1ad09f32493a359932f1c544293a400caf61373e0a183d1e17f6c526

See more details on using hashes here.

Provenance

The following attestation bundles were made for sdbtool-0.9.4.tar.gz:

Publisher: python-publish.yml on learn-more/sdbtool

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sdbtool-0.9.4-py3-none-any.whl.

File metadata

  • Download URL: sdbtool-0.9.4-py3-none-any.whl
  • Upload date:
  • Size: 38.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sdbtool-0.9.4-py3-none-any.whl
Algorithm Hash digest
SHA256 7ca5a0e82fb954ed43fc8632a12f9f713baddc68a44afb823d46c31f35d5a479
MD5 a88028286d3c1a7d6fdd7bddd30adcc1
BLAKE2b-256 2701b5c5eee4401d647bdf430b045d4bef28e53014d5a8544049b556c01acedb

See more details on using hashes here.

Provenance

The following attestation bundles were made for sdbtool-0.9.4-py3-none-any.whl:

Publisher: python-publish.yml on learn-more/sdbtool

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page