DOBON.NET DOBON.NETプログラミング掲示板過去ログ

偽装ユーザでのプロセス起動方法

環境/言語:[.Net Framework2.0]
分類:[ASP.NET]

こんばんは。
.Netから、「exe」ファイルを実行しようとしているのですが、「exe」へのアクセス権の
関係から偽装ユーザでの実行を試しています。
まず、他の機能でも偽装の必要があるため、下記のようにweb.configで偽装ユーザの
定義を行っています。
[web.config]
 <identity impersonate="true" userName="user" password="pass"/>

また、実際にコマンド発行する部分では下記の通りにしています。

 Dim ret As Integer
 Dim procSet As New ProcessStartInfo

 procSet.ErrorDialog = False
 procSet.FileName = "D:\TEST.cmd"
 procSet.WindowStyle = ProcessWindowStyle.Hidden
 procSet.UseShellExecute = True

 Using obj As Process = Process.Start(procSet)
  obj.WaitForExit()
  ret = obj.ExitCode
 End Using

ここで実行している「TEST.cmd」の中で、exeファイルの実行を行っています。
このexeファイルは、内部処理実行後、そのまま終了し、「TEST.cmd」へ制御が
戻ります。(exeはコマンド内ではcall文での呼出し)
ここで実行している「exe」ファイルでは、ファイルの読み書き等も含んでいます。
ただし、読み書きするファイルはweb.configで定義したユーザ以外にアクセス権は
与えられていません。


上記のプログラムでは、「user」といったユーザに偽装してコマンドを実行している
はずですが、「exe」ファイルが使っているファイルのアクセス権でエラーが発生
しています。
「System.Security.Principal.WindowsIdentity.GetCurrent().Name」をプロセスの
実行前で取得してみましたが、きちんと実行ユーザは「user」になっていました。
また、上記モジュールの入っている端末(IISの入っている端末)へ「user」でログインし、
コマンドプロンプトから「TEST.cmd」を起動しても正常に動作します。

.Netから「TEST.cmd」を実行するのは「user」だが、exeファイルの実行や
exeファイルからのファイル読み書きといった部分はユーザが異なる!?等と
考えたのですが、原因が特定できずにいます。

何かわかる方いらっしゃいませんでしょうか。
よろしくおねがいします。。。
> .Netから「TEST.cmd」を実行するのは「user」だが、exeファイルの実行や
> exeファイルからのファイル読み書きといった部分はユーザが異なる!?等と
> 考えたのですが、原因が特定できずにいます。
runasコマンド?

DOBON.NET | プログラミング道 | プログラミング掲示板