使ってます psexec.exe
別のセキュリティコンテキストでプログラムを実行します。ただし、プログラムは起動しますが、指定されたセキュリティコンテキストで実行されていないようです。
その最小限の形で:
psexec -u wsadmin -p password cmd
そのウィンドウに入力した場合、新しいcmdウィンドウを開始しますwhoami
C:\Windows\system32>whoami
win-k1r7g38nlkt\wsadmin
C:\Windows\system32>net localgroup administrators
Alias name administrators
Comment Administrators have complete and unrestricted access to the computer/domain
Members
-------------------------------------------------------------------------------
Administrator
wsadmin
The command completed successfully.
ご覧のとおり、私は間違いなく他のユーザーです。そして、このユーザーが「管理者グループ」のメンバーであることを確認できます
C:\Windows\system32>mkdir test
Access is denied.
指定したユーザーでrunasを使用すると、想定どおりに機能します。しかし、コマンドラインでパスワードを入力する必要があります。
私は解決策を見つけました:
UACを有効にすると、psexecが想定どおりに機能しないことがわかります。
いつでもHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA
に設定されています 0
psexecは期待どおりに動作します。
Windows Vista以降では、UACが有効になっている場合、psexec
によって起動されたプロセスは、管理者アカウントから実行された場合でも、完全な特権を取得するために昇格トークンを設定する必要があります。これは、psexec
コマンドラインで-h
属性を渡すことで実行できます。したがって、コマンドを次のように変更します。
psexec -h -u wsadmin -p password cmd
詳細については、psexec /?
を実行してください:
-h If the target system is Vista or higher, has the process
run with the account's elevated token, if available.
管理者以外のユーザーがPsExec
を開始している2つのWindows 7コンピューター間でPsExec
への有効な方法を見つけるのに数時間かかりました... UACを無効にしています(EnableLUA=0
、ConsentPromptBehaviorAdmin=0
、LocalAccountTokenFilterPolicy=1
)が機能せず、ファイアウォールをオフにしても機能しませんでした...
ここで私は動作する方法を見つけました-JelmerSに感謝します:(---からの情報 PSexecは提供されたユーザー名とパスワードを使用してマシンに接続していません )
これは、別のユーザーとしてコマンドを実行する前に、psexec
がローカルの認証情報を使用してADMIN$
共有にアクセスしようとするためです。このスレッドによると、psexecを実行する前に資格情報をキャッシュできます。
cmdkey.exe /add:MACHINE_NAME_HERE /user:MACHINE_NAME_HERE\Administrator /pass:PASSWORD_HERE
psexec.exe \\MACHINE_NAME_HERE -i notepad
cmdkey.exe /delete:MACHINE_NAME_HERE
ここに私のために働いたものがあります、それはUACを完全に取り除くのではなく、管理者に対してそれをオフにします
コンピューターの構成\ Windowsの設定\セキュリティの設定\ローカルポリシー\セキュリティオプション\ユーザーアカウント制御:管理者承認モードですべての管理者を実行-無効