2

Run.Net C# アプリケーションをレジストリキー (でHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run、他の文字列値が存在し、問題なく起動する)から実行しようとしています。しかし、なんらかの理由で、アプリへのパスがアプリを起動しません。そのため、コマンド プロンプトからコマンドを手動で実行して、それが問題であるかどうかを確認することにしました。そうだった。だから今、私は本当に当惑しています:

これはリリース モードでコンパイルした .Net 4.0 C# アプリケーションです。アプリケーションは次の場所にあります。

C:\Program Files (x86)\MyCompany\MyProduct\MyProduct.exe

アプリケーションをダブルクリックすると、正しく実行されます。CMD ウィンドウを開いて、次の操作を行うこともできます。

cd "C:\Program Files (x86)\MyCompany\MyProduct\"
MyProduct.exe

そして、アプリケーションは問題なく起動します。 ただし、これを試してみると:

"C:\Program Files (x86)\MyCompany\MyProduct\MyProduct.exe"

アプリケーションが起動しません。(!) 当然、レジストリ キーも機能しません。

フル パスから .Net アプリケーションを実行するために必要な追加の手順はありますか?

4

2 に答える 2

4

どうやらあなたのアプリは「現在のディレクトリ」に依存しているようです。ある種のファイルを開くため。

最善の方法は、その依存関係を見つけて、絶対パスで修正することです。

それが不可能な場合の次善の策は、できるだけ早く現在のフォルダーを実行中の .EXE のフォルダーに変更することです。つまり、次の行をできるだけ早く実行する必要があります。

Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;

しかし、それは、問題のあるコードの前にそれを実行できた場合にのみ機能します。たとえば、静的コンストラクターにある場合は難しい場合があります。

于 2013-08-21T20:22:08.460 に答える
2

作業ディレクトリ内の何かへの相対ファイル参照があるようです。アプリに読み込もうとしているファイルはありますか? 正しいファイル パスを使用していることを確認してください。

于 2013-08-21T20:21:14.460 に答える