2009-08-12 10 views
1

VS2008を使用してC#.netでプログラムを作成しました。ドライブやD:ドライブ、または他のどこかに、ユーザは、それはCになります場合、私は知らないプログラムをインストール私の.netプログラムがインストールされているディレクトリをどのように参照するのですか?

。問題は、自動的にファイルを作成し、後でユーザーの助けを借りずにこれらのファイルを取得するプログラムが必要なことです。

私は、プログラムがインストールされているディレクトリにこれらのファイルを配置して、場所を変えずにこのファイルを誤って削除する可能性を減らすことが最も難しいと考えました。

は質問1:

ユーザーがインストール場所の彼らの選択を持っているとき、私は自分のアプリケーションのインストールディレクトリを参照してどのように?

質問2:

私もそれをこのようにやるべきか、私は全く異なる視点からこのされているはずです。

答えて

3

Assembly.GetExecutingAssembly()。場所は、あなたの現在実行中のアセンブリへのパスを提供します。 \プログラムファイル:

しかし、その場所への書き込みはCのような場所への書き込みではない通常のユーザーの詳細厳しいVistaでは、Server 2008およびそれ以降の上で実行しているユーザーのために問題が発生します。あなたの最善の策は、おそらくのようなものです:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 

Environment.SpecialFolderためのオプションの束を保存したい正確に何に基づいてあります。

+0

'Environment.SpecialFolder'を使用するのが最良の方法です。 –

+0

これは私にとって素晴らしい仕事でした。ヘルプザックに感謝します。 J –

0

あなたは、あなたのアプリケーションが属している場所を決定するためにSystem.Environment.CurrentDirectoryプロパティを使用することができます。

代わりに、分離ストレージに見ることができます。データはユーザー/マシンごとに(選択したとおりに)保存されるため、異なるユーザーに異なるファイルを保存することができます。あなたが選ぶ

は、保存したいどのくらいの情報に依存しており、セキュリティはそれを囲みます。

+0

System.Environment.CurrentDirectoryはインストールディレクトリを指定せず、現在のアクティブ/作業ディレクトリを提供します。 http://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspxを参照してください。 –

0

あなたは使用して現在のディレクトリを取得することができます

string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

これはあなたの.exeファイルに関連するファイルを格納する有効かつ便利な方法です - あなたは常にあなたの実行ファイルが実行されている場所からの相対ディレクトリを使用してナビゲートすることができ、つまり、どこにインストールされているか心配する必要はありません。

.exeを任意のディレクトリに自由にコピーできるようにするには、ユーザープロファイル(Windowsの場合)のユーザーのアプリケーション設定ディレクトリなど、よく知られている場所にデータを保存することを検討できます。

0

Application.StartupPathがあなたのためか、ということを行う必要があります。

private static string GetApplicationPath() 
{ 
    return System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); 
} 

How to get the path of app(without app.exe)?

1

は、.NETでの分離ストレージ機能(System.IO.IsolatedStorage)のための完璧なソリューションのように思えます。

オブジェクト経由でアクセスし、パスは.Netによって制御されます。

関連する問題