私はかなり難しいデバッグの課題に苦労しており、誰かがこれを機能させる方法の手がかりを持っているかもしれないことを望んでいます。
シナリオは次のとおりです。
管理者権限を持つユーザーアカウントで実行され、標準のユーザー権限を持つユーザーアカウントで別の実行可能プロセスを起動するC#Windowsサービスがあります。2つのプロセスは、WCFを使用して通信するように設計されています。
残念ながら、子プロセスが起動されると、すぐにクラッシュし、イベントログには何が起こったかを示すものが何もありません。親プロセスは例外なく実行を継続します。
詳細:これら2つのアプリケーションは、親プロセスがデスクトップアプリケーションである構成で確実に連携します。親もWindowsサービスとして成功しましたが、両方のプロセスが管理者権限を持つ同じユーザーアカウントで実行されている場合に限ります。
子プロセスの特権を制限するためにそれらの関係を再構成する必要がありますが、これはクラッシュが発生したときです。
私がやろうとしていることが実行可能であることを証明するために、2つのスタブアプリケーションを作成し、それらを目的の構成で正常に起動しました。したがって、実際の子アプリには、この構成と互換性がなく、コードの実行が開始される前でもクラッシュを引き起こすものが含まれていると推測できます。残念ながら、子プロセスはかなり複雑なレガシーコードに基づいているため、問題を解決するまでその要素を分離するのは簡単ではありません。そのため、信頼できるステップスルー手段が本当に必要です。
子プロセスのコードを変更して、起動直後にデバッグを開始すると、デバッガーをアタッチするように促されますが、アタッチを完了できず、そのことを示すメッセージが表示されThe Just-in-time debugger does not have permission to debug the process
ます。
私もこの質問を見て、この提案されたソリューション(これは本当に有望に見えます)を実装しようとしましたが、私のシナリオでは機能しません。アプリケーションを起動する前にデバッグを起動する代わりに、何も実行しないように見えます。デバッガーもアプリケーションも起動されず、デバッグの招待ダイアログは表示されません。ただし、この手法が自分の環境で機能することを確認したので(Notepad.exeを起動するために使用することにより)、問題の原因となっているアプリケーションまたは起動方法に明らかに何かがあります。
誰かが何か提案があれば、私は実験して、私のテスト結果についての詳細を共有することを嬉しく思います。
あなたのアイデアに感謝します、
ティム