2016-07-01 12 views
0

私は.exeファイルをアプリケーションで実行する必要があるプロジェクトに取り組んでいます。ここの問題は、ファイルが常にユーザーのマシン上の同じ場所にあることを保証できないことです。私のアプリはこの.exeファイルの場所を知る方法がありません。 プロジェクト内の他のexeファイルへのパスを設定するにはどうすればよいですか?

だから例えば、私のアプリケーションは、次の場所に(デフォルトで)配置されて mongod.exeを実行する必要があります。 C:\プログラムファイル\のMongoDB \サーバー3.2 \ビン\のmongod.exe \。

ここでの問題点は、ユーザーがこのアプリケーションを別の場所にインストールしている可能性がありますので、.exeファイルへのパスが常にクライアント。

現在、私は、ファイルにデフォルトのファイルパスを格納するSettings.settingsファイルを使用しています:

A setting in the Settings.settings file

ユーザーがのapp.configファイルを編集したり、Iすることができますどちらかでしたユーザーがファイルパスを変更できるようにするUIを提供します。

私の質問は、より良い方法がありますか?

+0

を動作しません。次に、選択したファイルが実際に意図されているものであることを確認するようにユーザーに依頼します。これは、そのようなファイルが複数ある場合に特に便利です。あなたが持っているかもしれない1つの問題は同じマシン上のバージョンの変更です。回復/再発見プロセスをプログラムする必要があります。 – Eniola

+1

'HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \'を見てください。 –

答えて

0

レジストリ内のMongodb.exeファイルのパスを検索すると便利です。レジストリエントリからexeパスを探してみてください。

RegistryKey key = Registry.LocalMachine.OpenSubKey( "Software \ MongoDB \ MongoDB Connector"); if(key!= null) { オブジェクトo = key.GetValue( "InstallPath"); }

オブジェクトoは、MongoDB.exeファイルのパスを指定します。

P.S:アプリケーションがローカルマシンのレジストリにアクセスする権利を持っていない場合は、このアプローチは、アプリケーションのクロールにディスクを持っていると.exeを探していないのはなぜ

関連する問題