3

C# でスクリーン セーバーを作成しましたが、プレビュー モードで実行したり起動したりすると、例外がスローされます。Windows\System32 でダブルクリックすると、問題なく動作します。Visual Studio デバッガーでは、Windows\System32 にもあるアプリケーションの .config ファイルを読み取れないことがわかりました。

rundll32.exe がスクリーン セーバーを実行すると、app.config ファイルが省略されていると思います。強制的にロードする方法はありますか?

ありがとう

4

5 に答える 5

2

SysInternals の Process Monitor を推薦してくれた方々に感謝します。それを使用して、構成ファイル名の 8 文字バージョンを探していることがわかりました。これは SCR ファイルの最初の 6 文字で、次に ~1.scr です。これがプロセスの名前であるためです。私がしなければならないのは、ファイルの名前を変更するか、scr ファイルの名前を変更したくないので、2 つのバージョンを保持することだけです。

于 2010-01-20T12:28:00.773 に答える
1

以前の経験から覚えている限りでは、スクリーン セーバーは「現在のディレクトリ」が %userprofile% に設定された状態で実行されます。構成ファイルをそのディレクトリに一時的に配置することで、それが真かどうかを確認できます。たまたまそれが当てはまる場合は、現在のディレクトリからではなく、スクリーンセーバーが置かれているディレクトリから構成を読み取るコードを追加する必要があります。

于 2010-01-20T11:50:19.250 に答える
0

Process Monitor を使用して、スクリーン セーバーが読み取ろうとしている構成ファイルを確認します。

于 2010-01-20T11:22:21.017 に答える
0

あなたのアプリケーションは別の作業ディレクトリで実行されていると思います。この投稿 (下を読む)から、通常の実行可能ファイルを作成し、名前を *.scr に変更し、ファイルを右クリックして「インストール」を選択する必要があるようです。これにより、両方が system32 ディレクトリに移動します。

おそらく、「インストール」機能により、スクリーンセーバーの呼び出し方法や、作業ディレクトリとして検索する場所が変更されます。

于 2010-01-20T11:34:15.180 に答える
0

これまでのヒントがどれも機能しない場合は、同様に機能します

  • 設定を machine.config ファイルに追加する、または
  • 構成にカスタム ファイルを使用する
于 2010-01-20T11:50:57.330 に答える