Windowsでsudo/suする方法

photo credit: flod via photopin cc

WindowsマシンでJenkinsからVisioを起動させる処理を動かしていたところ、1時間経っても応答が却ってこなかった。その際にJenkinsを実行しているユーザとVisioをインストールしたユーザが異なっていたため、それが問題ではないか?と考え、Windowsでsudoをする方法を調べたので、以下に記載する。

Windowsでsudoする方法

runasを使う。

Windows Vista and later syntax
RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ] /user: program
RUNAS [ [/noprofile | /profile] [/env] [/savecred] ] /smartcard [/user:] program
RUNAS /trustlevel: program
/noprofile  Specifies that the user's profile should not be loaded. This causes the application to load more quickly, but can cause some applications to malfunction.
/profile    Specifies that the user's profile should be loaded. This is the default
/env    To use current environment instead of user's.
/netonly    Use if the credentials specified are for remote access only.
/savecred   To use credentials previously saved by the user.
/smartcard  Use if the credentials are to be supplied from a smartcard.
/user    should be in form USER@DOMAIN or DOMAIN\USER
/showtrustlevels    Displays the trust levels that can be used as arguments to /trustlevel.
/trustlevel  should be one of levels enumerated in /showtrustlevels.
program command line for EXE. See below for examples.
Examples:
> runas /noprofile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:user@domain.microsoft.com "notepad \"my file.txt\""
NOTE: Enter user's password only when prompted.
NOTE: /profile is not compatible with /netonly.
NOTE: /savecred is not compatible with /smartcard.

従って、以下のようになる。

> runas /user:jenkins-user command

コマンドに引数を渡したい場合は””で括る必要があるので、以下のようになる。

> runas /user:jenkins-user "command arg1 arg2"

参考情報