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
-
Install Python 3 (either for all users or single user) and .
-
pip install windows-sudo -
windows-sudo-install -
Answer "Y" to the query about modifying PATH.
(pip will install the
windows-sudo-installcommand automatically as part of step 2 -- but it can't run it for you, since apip installfrom a prebuilt wheel never executes arbitrary code, onlywindows-sudo-installitself can. It will request elevatation when needed.) -
Open a new cmd window --
sudoworks there immediately (it installs asudo.batlauncher, so no.pyfile association or PATHEXT change is needed). The one exception: if it just moved the native Windowssudo.exeon 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)
| File | Size | Uploaded | |
|---|---|---|---|
| windows_sudo-2.0.2.tar.gz | 17.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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