[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/06/08(Wed) 10:29
投稿者名:A3
Eメール:
URL :
タイトル:
runasコマンドで起動したときのスクリプトコントロールの動作について
はじめまして。A3と申します。

VB6.0(SP4)とMicrosoft Script Control 1.0(msscript.ocx)を使って
VBScriptの簡易スクリプトランチャーを作っています。(仮にAAA.exeとしておきます。)
※VB画面でリストを選択すると、それに対応したVBScriptを実行するような形です。

そこで、以下のような問題にぶつかりましたのでご質問させて頂きます。
実行環境はWindows2000Professionalです。

 VBScriptでC:\Winntにファイル生成する処理がある場合、
 (Usersグループ所属の)一般ユーザでは書込み権限がありません。

 そこでC:\Winntに書込みできる権限を持った新規ユーザを作成し
 runasコマンドで新規ユーザに切り替えてAAA.exeを実行しました。

 ⇒結果、AAA.exeから呼び出されたVBScriptでC:\Winntにファイルを生成しようとすると、
  エラーとなってしまいました。
  ※runasコマンドを使わないときと同じ状態。

スクリプトコントロールから呼び出されたVBScriptに別ユーザ権限を与える方法はあるのでしょうか

投稿時間:2005/06/13(Mon) 18:07
投稿者名:A3
Eメール:
URL :
タイトル:
別の方法で目的を達成できたので、ご報告いたします。
A3です。

質問の内容が解決出来たわけではありませんが
別の方法で目的を達成できたので、ご報告いたします。

よくよく考えてみると、私がやりたいことは
・VBプログラムから、別ユーザ権限でVBScriptを実行したい。
ということで、別にmsscript.ocxにこだわる必要がなかったことに気がつきました。


そこで、別ユーザでプロセスを起動するAPIをつかって
cscript.exe/wscript.exeを起動してみたところ、目的の動作が出来ました。
(NTでも動かす場合:LogonUser/CreateProcessAsUser/CloseHandle)
(2000以降専用なら:CreateProcessWithLogonW)

前者の場合は、実行ユーザに以下の特権が必要でした。
 ・SE_TBC_NAME オペレーションシステムの一部として動作
 ・SE_CHANGE_NOTIFY_NAME 走査チェックのバイパス
 ・SE_ASSIGNPRIMARYTOKEN_NAME プロセスレベルトークンの置き換え
 ・SE_INCREASE_QUOTA_NAME クォータの増加

後者の場合ですと、実行ユーザに特権は不要でした。
※別ユーザにローカルログオン特権は必要。

後者の場合、UNICODE文字列をAPIに渡さなければいけないことに
気付くのに時間がかかりましたが、なんとか動かすことができました。

以上、ご報告でした。