こんにちは。
ゴートラと申します。
私は、下記の環境で開発をやっております。
統合開発環境: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といフリーのツールでは、期待通りの動きをするみたいなので、
不可能では無いと思うのですが・・・
どうぞ、よろしくお願いします。
エラーを返すのって、
リンク先のコードのどこでどのエラーを返します?
DACLやACEのところですか?それともCreateProcessAsUserですか?
これでできるかわからんけども、
CreateProcessAsUserする前にImpersonateLoggedOnUserで
Admin権限に偽装したらできないもんですかね?
上記のツールをダウンロードして
動作を確認しながらバイナリを覗いていたんですが……
これ、たんに CreateProcessWithLogonW API 呼んでるだけでわ?
# CreateProcessWithLogonW API は内部で Runas を呼んでたはず
porinさん、kureさん
回答ありがとうございます。
CreateProcessWithLogonWで検索したら、
サンプルプログラムを公開しているサイトがあり、
そのまま利用できました。
ありがとうございました。
ツイート | ![]() |