WPFアプリから別のユーザーとしてInternetExplorerを起動しようとしています。これにより、ユーザーが(内部)Webサイトにアクセスしたときに、統合Windows認証を介してサイレントに認証されます。
コンピューターでプロセスを初めて起動し、IE7 / 8を初めてセットアップしようとしたときに発生する奇妙な展開/環境の問題のため、iexplore.exeを他のユーザーとして起動したくありません。ただし、すべてのマシンですべてのIEインストーラーをミュートする方法についての解決策があれば、ぜひ聞いてみてください。
私の意図した質問に戻ります。( https://serverfault.com/questions/70376/runas-domain-account-still-asks-for-passwordrunas
に感謝)を使用して、コマンドプロンプトから必要な正確なIEのなりすまし動作を取得できます* 。
c:\> runas /noprofile /netonly /user:MyDomain\MyUser iexplore.exe
*注:runas
さまざまな理由でWPFアプリに使用できませんが、最終的な結果は私が望むものです。
とにかく、私はを行うC#の同等のコードが欲しいrunas /noprofile /netonly iexplore.exe
です。
P/Invokeをオンにして途中ですCreateProcessWithLogonW
。これは私が持っているものです:
uint LOGON_NETCREDENTIALS_ONLY = 2;
var lpStartupInfo = new CreateProcessWithLogonW_PInvoke.STARTUPINFO();
CreateProcessWithLogonW_PInvoke.PROCESS_INFORMATION processInformation;
CreateProcessWithLogonW_PInvoke.CreateProcessWithLogonW(
userName,
domain,
pw,
LOGON_NETCREDENTIALS_ONLY,
null,
commandLine,
0,
null,
null,
ref lpStartupInfo,
out processInformation);
これにより、Internet Explorerが正常に起動しますが、ユーザーになりすましているようには見えません。runasコマンドを使用してユーザーになりすますことができるので、認証の失敗はIE/ゾーン/パスワード/IIS設定ではなく、への呼び出しで正しく行っていないことであると98%確信していますCreateProcessWithLogonW()
。
私が気づいたことの1つはrunas /netonly
、スイッチを追加した場合にのみコマンドが機能すること/noprofile
です。これは私を困惑させています。C#でP/Invokeを介してこのスイッチに相当するものを設定する方法がわかりません。
どちらの解決策でも助けていただければ幸いです(「IEはウィザードを最初に起動したときにウィザードを実行する」を解決するか、欠落している奇妙なP / Invoke設定を見つけます)。