1

私はコンソールアプリケーションへのProcess.Start()呼び出しを持つasp.net mvc 4アプリケーションを持っています(c++で書かれています)。

問題は、コンソール アプリケーションが asp.net アプリケーションから適切に実行されないことです (サイトから画像を生成し、画像はすべて白です)。

コンソール アプリケーションから同じ呼び出しを使用すると、完全に機能します。

私が見たように、それは特権の問題であるはずです。

ASP.NET が同じユーザーから実行されているかどうかはよくわかりませんが、私のユーザー アカウント (管理者) で実行されていることがわかりました。

私が試したこと:

  1. process.StartInfo.UseShellExecute = true/false.

  2. 管理者ユーザーの process.StartInfo.UserName と Password。

  3. C:\Users\MyUser\Documents\IISExpress\config\applicationhost.config にある IIS 構成ファイルを次のように編集します。

    <applicationPoolDefaults managedRuntimeLoader="v4.0" >
        <processModel/>
    </applicationPoolDefaults>
    

    に:

        <applicationPoolDefaults managedRuntimeLoader="v4.0" >
            <processModel userName="administrator username" password="administrator password"/>
        </applicationPoolDefaults>
    

    そのため、匿名の要求がプロセスの ID で実行され、プロセスに特権がない場合、明示的なユーザーが匿名認証に使用されます。ここから撮影

助けてくれてありがとう!

4

1 に答える 1

0

「コードで特定のユーザーを偽装する」のセクションを確認してください。

http://support.microsoft.com/kb/306158#4

指定されたユーザーを偽装した後、コードから Process.Start を呼び出すことができるはずです。プロセスはその ID を使用して作成されます。プロセスが開始されたら、「impersonationContext.Undo()」を呼び出して、ユーザー ID をアプリ プール ID に戻す必要があります。

別の方法を使用して ASP.NET 内からユーザーを偽装すると、アプリ全体のアクセス許可が昇格されます。これらの昇格されたアクセス許可をこのプロセスだけに制限することをお勧めします。

于 2012-09-07T01:46:39.787 に答える