Skip to main content

windows-sudo

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

Installation

  1. Install Python 3 using for all users and .

  2. pip install windows-sudo

  3. windows-sudo-install

    (pip can install that last command automatically as part of step 2 -- 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.)

  4. 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 a 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.

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 goofy 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.0

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.0
File Size Uploaded
windows_sudo-2.0.0.tar.gz 17.1 kB Details

Built distribution (wheel)

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

Total release size: 32.2 kB

Release files / windows_sudo-2.0.0.tar.gz

Download URL windows_sudo-2.0.0.tar.gz
Size 17.1 kB
Tags Source
SHA-256 checksum
How to use checksums
cf77fbfb279877f3cc0c99f096adc5edcc32169618587d42d386c97f8894b568
BLAKE2b-256 checksum
How to use checksums
f96d089349700f432b8087ef981c81bd0ea1daea96600168c588c91970039b37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

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

Download URL windows_sudo-2.0.0-py3-none-any.whl
Size 15.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b706bbce878647e6665db5536e76807ee591b685586b8cfc4fa1d73e22110116
BLAKE2b-256 checksum
How to use checksums
2d75d56e64b7ed844907d9867be4e0a4e07d024101f7601a6379ccad73d34e3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release history Release notifications | RSS feed

2.1.1

2 release files

2.1.0

2 release files

2.0.2

2 release files

2.0.1

2 release files

This release

2.0.0 This release

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