このブログをご覧のみなさん、こんにちは。

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

Windows で sudo する方法

runas を使います。

Windows Vista and later syntax
RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ] /user:<userName> program
RUNAS [ [/noprofile | /profile] [/env] [/savecred] ] /smartcard [/user:<userName>] program
RUNAS /trustlevel:<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   <userName> should be in form USER@DOMAIN or DOMAIN\USER
/showtrustlevels    Displays the trust levels that can be used as arguments to /trustlevel.
/trustlevel <level> 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”

参考情報