Skip to main content

win_depends

🧩 win_depends is a lightweight tool to analyze DLL and EXE dependencies on Windows. It supports recursive dependency resolution, detection of missing or unused files, and exports to DOT graph format.


1.0.3

  • --check-missing reports missing delay-loaded dependencies and their downstream dependencies as warnings instead of missing-file errors.
  • A dependency still appears as an error if any non-delay-loaded path requires it.
  • Missing files are deduplicated, with importing files and delayed paths shown.
  • Duplicate normal/delayed imports retain the normal import's required status.

📦 Installation

pip install win_depends

🚀 Usage Example

Run the tool in a directory containing .dll and .exe files:

win_depends

You can also specify a path to a file or directory:

win_depends ./path/to/myapp.exe
win_depends ./build/bin/

Optional flags can customize the output, such as displaying a dependency tree:

win_depends ./build/bin --tree
```bash
win_depends

Optional flags can customize the output, such as displaying a dependency tree:

win_depends --tree

🔍 Features

  • ✅ Analyze imports between .dll and .exe files, including delayed and bound imports
  • ✅ Detect forwarded exports and surface forwarding targets directly in tree / missing / invalid outputs (DLL name only)
  • ✅ Resolve api-ms-* / ext-ms-* contracts to host DLLs (for example kernelbase.dll) to avoid false missing reports
  • ✅ Parallel dependency analysis for faster performance
  • ✅ Automatic detection of system DLLs (always enabled)
  • ✅ Detect missing dependent files; delay-loaded chains are reported as warnings
  • ✅ Detect unused files in directory
  • ✅ Tree-style output of dependencies
  • ✅ Export to DOT format for graph visualization

🧪 Sample Output

Use win_depends .\demo.exe --check-missing to list missing dependencies. Missing DLLs imported directly with delay loading, or reached only through a delay-loaded ancestor, appear under Missing dependencies (delay-loaded; warning only) with a warning marker. If any non-delay-loaded path requires the same file, it remains an error. Each file is listed once, with its importing files and delayed paths marked [DELAY-LOADED]. These warnings do not guarantee that the affected feature will work when the DLL is actually loaded. The command's exit-code behavior is unchanged.

For a single-file target, paths start at that file. For a directory target, dependency roots are inferred from the full graph, so scanning a DLL does not by itself make its dependencies mandatory. Rootless source cycles are treated conservatively as entry points.

$ win_depends ./demo.exe --tree

└── demo.exe
    ├── user32.dll ❌
    ├── plugin.dll
    │   └── helper.dll
    └── kernel32.dll ❌

Missing dependencies:
  user32.dll
  kernel32.dll

Metadata

Release files for win-depends 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for win-depends 1.0.3
File Size Uploaded Provenance
win_depends-1.0.3.tar.gz 12.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for win-depends 1.0.3
File Interpreter ABI Platform
win_depends-1.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 25.9 kB

Release files / win_depends-1.0.3.tar.gz

Download URL win_depends-1.0.3.tar.gz
Size 12.0 kB
Tags Source
SHA-256 checksum
How to use checksums
d89acf22f43a48b4756cca760e0e9789511e40586adec0dcde8ec68060a8f634
BLAKE2b-256 checksum
How to use checksums
831eeb38da9cc221c742a7514f709c5e0bd13facfbb9e2dc99ef3f8ecdbd5aab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.11

Release files / win_depends-1.0.3-py3-none-any.whl

Download URL win_depends-1.0.3-py3-none-any.whl
Size 13.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fc9b7537a6029d6a1db0c93a255d5856ee3b9ae12a7dcdcb1c9b74cf83f8c5db
BLAKE2b-256 checksum
How to use checksums
13344398d71f4273715c608b428ab6f2743fad30751931c8a7e6d437a2dc435b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.11

Security for win-depends 1.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page