別のユーザーに成り済ますには?

解決


ゴートラ  2006-10-15 11:40:14  No: 63327

こんにちは。
ゴートラと申します。

私は、下記の環境で開発をやっております。

  統合開発環境:Microsoft Visual Studio .NET 2003
  言語:C++
  種類:Win32 プロジェクトのコンソール アプリケーション

  OS:Win2000 SP4

Usersグループにしか所属していないユーザー環境にて、
administratorの権限で、特定のexeを実行するプログラムを作りたいのですが、
行き詰まってしまいました。

LogonUserとCreateProcessAsUserを使用して
実現しようと思い、下記のサイトのサンプルを丸ごとコピーしたところ、
  <http://support.microsoft.com/default.aspx?scid=kb;ja;165194>
下記の権限がついておらず、エラーを返します。
  SE_TCB_NAME(オペレーティングシステムの一部として機能)
  SE_ASSIGNPRIMARYTOKEN_NAME(プロセスレベルトークンの置き換え)
  SE_INCREASE_QUOTA_NAME(クォータの増加)

権限をローカルポリシーにて手動設定すれば、うまく動くのですが、
プログラムで一時的に権限を取得する方法が知りたいです。

RUNASXといフリーのツールでは、期待通りの動きをするみたいなので、
不可能では無いと思うのですが・・・

どうぞ、よろしくお願いします。


kure  2006-10-17 09:02:07  No: 63328

エラーを返すのって、
リンク先のコードのどこでどのエラーを返します?
DACLやACEのところですか?それともCreateProcessAsUserですか?

これでできるかわからんけども、
CreateProcessAsUserする前にImpersonateLoggedOnUserで
Admin権限に偽装したらできないもんですかね?


porin  2006-10-17 22:47:08  No: 63329

上記のツールをダウンロードして
動作を確認しながらバイナリを覗いていたんですが……

これ、たんに CreateProcessWithLogonW API 呼んでるだけでわ?

# CreateProcessWithLogonW API は内部で Runas を呼んでたはず


ゴートラ  2006-10-29 10:35:19  No: 63330

porinさん、kureさん

回答ありがとうございます。

CreateProcessWithLogonWで検索したら、
サンプルプログラムを公開しているサイトがあり、
そのまま利用できました。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加