3

私たちのアプリケーションは、Win32アンマネージドアプリケーションと.NET2.0マネージドアプリケーションのハイブリッドです。Win32部分はメインの実行可能ファイルであり、ある時点で.NET 2.0ランタイムをロードしてホストし、いくつかの管理対象モジュールをロードして新しいWinFormsウィンドウを開きます。

私たちはCASPOLタイプの問題を共有してきましたが、今日は非常に奇妙な問題があり、誰かが私にいくつかの指針やアイデア、または基本的には何かを教えてくれることを望んでいます。これを解決します。

citrixを介してアクセスするサーバーで、アプリケーションファイルが、サーバー/ドメイン管理者である現在ログオンしているユーザーのデスクトップにあるディレクトリにある場合、プログラムは正常に実行されます。.NETウィンドウは期待どおりに開きます。

ただし、ディレクトリを同じディスクのルートに移動すると、サーバー内の物理ディスクになり(SANマッピングなど、私の知る限りCASPOLコマンドをトリガーするものはありません)、他のすべてを同じ、同じユーザーに保ちます。同じ構成などの場合、.NETウィンドウを呼び出そうとすると、アプリケーションがサイレントにクラッシュします。消えるだけでクラッシュします。これは、スタックオーバーフローのようなものである可能性を示唆しています。アプリの一部にロギングを追加して、何がどこで発生するかを把握できるようにすることを検討していますが、この質問もここに投稿しています。

これまでのところ、CASPOLアクセスリストに異常がなく、NGENキャッシュに異常がなく(サーバーの所有者が以前から破損した画像があった可能性があると考えていました)、異常がないことを確認しました。 GAC(アセンブリにはGACを使用しません)。

要約:

  • プログラムがU:\ Documents and Settings \ USERNAME \ Desktop \ directoryから実行される場合、プログラムは機能します
  • U:\ directoryから実行された場合、実行されません
  • U:サーバー内の物理ディスクです
  • NGENまたはGACキャッシュに明らかな異常はありません
  • 適切な.NETランタイムがインストールされ、アプリケーションに適切なファイルがインストールされています(デスクトップの場所から実行した場合は実際に正常に機能します)

役立つかもしれない何かを持っている人はいますか?

編集:問題はここで別の/他の情報で再質問され、「解決」されました。

4

4 に答える 4

2

私はかつてまさにそのような問題を抱えていました。多くの髪を引っ張った後、私は問題を見つけました。

Process.Start() またはそのような呼び出しを使用するときは十分に注意してください。開始方法によっては、さまざまなフォルダーが作業環境 (現在のパス、システム環境など) として使用される可能性があるためです。

于 2008-09-24T11:29:40.940 に答える
1

私が最初に考えたのは、アプリケーションのルートディレクトリを移動するときに問題を引き起こす、アセンブリやファイルなどへの参照用にプログラムで定義された相対パス/絶対パスがないことを確認する必要があるということです。

于 2008-09-24T09:49:41.603 に答える
1

ユーザー権限に関連している可能性はありますか? LUA Buglightから実行して確認します。直接関係がなくても、そのツールは役立つヒントを提供してくれるかもしれません。

于 2008-09-24T10:02:44.787 に答える
1

私の最初の刺し傷は、MS-Sysinternals からプロセス モニターを実行し、これら 2 つの場合でどのような呼び出し/結果が異なるかを調べることです。多分それはあなたに取り組むためのいくつかのヒントを与えるでしょう(同じ呼び出しに対する異なる結果、良いものではない問題の実行中のいくつかのエラー...)

MS からプロセス モニターをダウンロードできます: http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

于 2008-09-24T09:42:42.773 に答える