DOBON.NETプログラミング掲示板過去ログ
偽装ユーザでのプロセス起動方法
題名: 偽装ユーザでのプロセス起動方法
著者: marine
日時: 2008/11/21 17:59:41
ID: 23412
この記事の返信元:
(なし)
この記事への返信:
[23419]
Re[1]: 偽装ユーザでのプロセス起動方法
ちちち
2008/11/25 17:52:16
ツリーを表示
環境/言語:[.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ファイルからのファイル読み書きといった部分はユーザが異なる!?等と
考えたのですが、原因が特定できずにいます。
何かわかる方いらっしゃいませんでしょうか。
よろしくおねがいします。。。
題名: Re[1]: 偽装ユーザでのプロセス起動方法
著者: ちちち
日時: 2008/11/25 17:52:16
ID: 23419
この記事の返信元:
[23412]
偽装ユーザでのプロセス起動方法
marine
2008/11/21 17:59:41
この記事への返信:
(なし)
ツリーを表示
> .Netから「TEST.cmd」を実行するのは「user」だが、exeファイルの実行や
> exeファイルからのファイル読み書きといった部分はユーザが異なる!?等と
> 考えたのですが、原因が特定できずにいます。
runasコマンド?
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[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ファイルからのファイル読み書きといった部分はユーザが異なる!?等と
考えたのですが、原因が特定できずにいます。
何かわかる方いらっしゃいませんでしょうか。
よろしくおねがいします。。。