Skip to main content

windows-sudo

Like the Linux "sudo" command, but for Windows. Uses Python and pywin32 to run Administrator code.

(It will, theoretically, also actually run on Linux: but what would be the point?)

Installation

  1. Install Python 3 (either for all users or single user) and .

  2. pip install windows-sudo

  3. windows-sudo-install

  4. Answer "Y" to the query about modifying PATH.

    (pip will install the windows-sudo-install command automatically as part of step 2 -- but it can't run it for you, since a pip install from a prebuilt wheel never executes arbitrary code, only windows-sudo-install itself can. It will request elevatation when needed.)

  5. Open a new cmd window -- sudo works there immediately (it installs a sudo.bat launcher, so no .py file association or PATHEXT change is needed). The one exception: if it just moved the native Windows sudo.exe on the system PATH (see the Windows 11 note below), log off and back on for that change to take effect everywhere.

Alternatively, to run from a source checkout instead: py -m pip install pywin32 pyyaml, then install_sudo.bat in place of steps 2-3 above.

During installation, it will offer to move the Python script directory in PATH ahead of the directory which contains Windows 11 sudo.exe. If you do not select that option, you will always need to type sudo.bat in order to run this utility. IMHO, this one has much better features.

Operation

Usually . . . sudo your command here

If you are forgetful . . . sudo --help or sudo /?

To get an interactive Administrator session . . .

sudo cmd, sudo bash, or sudo ps (PowerShell)

To pause the Administrator window so you can read the messages before they disappear. . .

sudo --pause your command here

Special commands

To edit the hard-to-find Windows version of /etc/hosts . . .

sudo --hosts

To set environment variables from the command line . . .

sudo --set-user-env="arg1: val1, arg2: val2"

or

sudo --set-system-env="arg1: val1, arg2: val2"

(the above argument strings are in YAML format, and must be quoted because the spaces are part of the syntax.)

To remove an environment variable entirely, set its value to "None" . . .

sudo --set-user-env="arg: None"

Environment variables "PATH" and "PATHEXT" are a special case, and append their argument to the path. So, to add "C:\Some\Directory" to the search path, use . . .

sudo --set-system-env="PATH: C:\Some\Directory"

To remove one item from PATH or PATHEXT specifically (leaving the rest of the list alone), prepend a dash to its value, not its name . . .

sudo --set-system-env="PATH: -C:\Some\Directory"

Note the two dash forms are not interchangeable: "PATH: -C:\Some\Directory" removes just that one entry from the PATH list, while "arg: None" deletes the whole "arg" variable. A leading dash on the variable name itself (e.g. "-arg: val") is not special -- it is taken literally, as part of the name.

For lazy systems administrators who use Salt, any command beginning with "salt-" will be run with a pause . . .

sudo salt-call --local test.version

Last of all, sudo.py installs itself.

cd <the windows-sudo root directory>\windows_sudo
py sudo.py --install-sudo-command`

Windows 11 note

Recent Windows 11 builds (24H2+) can ship their own native sudo command in System32, which is normally found ahead of this package's version. When you run --install-sudo-command, it now detects that case and offers to move this package's install directory to the front of your PATH so sudo keeps resolving to this package instead. Answer "n" to leave the native command in control.

Testing

An automated go/no-go suite covers everything that needs no elevation (CLI smoke tests, arg parsing, quoting, etc.) . . .

py -m pytest tests/

For the elevated behavior itself, which only a human can judge, some toy scripts are provided for interactive testing under sudo . . .

sudo tests\manual\toy.py
sudo tests\manual\toy.bat
sudo --powershell ".\tests\manual\toy.ps1"

Each one reports its working directory, arguments, and whether it ended up elevated, then waits for a keypress so you can read the result.

Release files for windows-sudo 2.0.2

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

Source distribution (sdist)

Source distribution for windows-sudo 2.0.2
File Size Uploaded
windows_sudo-2.0.2.tar.gz 17.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for windows-sudo 2.0.2
File Interpreter ABI Platform
windows_sudo-2.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 32.9 kB

Release files / windows_sudo-2.0.2.tar.gz

Download URL windows_sudo-2.0.2.tar.gz
Size 17.5 kB
Tags Source
SHA-256 checksum
How to use checksums
453075f9847900165a28d23899c7f7d0a6808c208c48d2af844f8c1b59d954b9
BLAKE2b-256 checksum
How to use checksums
9212cfbd11d335aba0055da7e542a97abc1bb3cdadb8664e4cc3dd5e6d07caad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Release files / windows_sudo-2.0.2-py3-none-any.whl

Download URL windows_sudo-2.0.2-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
db4315398f85635b0ff1283af6b0c76ba163887ace8542fc7f87da4cd9d99d5e
BLAKE2b-256 checksum
How to use checksums
4957e4bd58c6718d624f6954db8d7b56df5dd7976b71ae171ff36e599db335c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Release history Release notifications | RSS feed

2.1.1

2 release files

2.1.0

2 release files

This release

2.0.2 This release

2 release files

2.0.1

2 release files

2.0.0

2 release files

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