必要なのは設定ファイルで、XML ファイルにすることができます。プログラム専用の設定ファイル。常に同じ場所にあるため、プログラムはそれがどこにあるかを認識しています。また、ユーザー固有にすることもできます。
すべての会社のプロジェクトに含めるクラス ライブラリを作成します。これにはクラス ファイルと会社名があります。そのため、Program Files ディレクトリ内の会社の場所と、設定を保存する Common ディレクトリと、保存するユーザーのディレクトリについては明らかです。設定。
そのため、これら 3 つを示しますが、必要なものはユーザーの設定ディレクトリまたは Common のいずれかです。プログラムのディレクトリを使用する際の問題は、プログラムC:\Program Files
が管理者として実行されていない限り、そこにある可能性があり、オペレーティング システムがそこに書き込むことを許可しないことです。
共通ディレクトリとファイル:
public const string Company = "YourCompanyName";
/// <summary>
/// Common to all users Company data directory.
/// </summary>
public static DirectoryInfo CommonDataDirectory
{
get
{
string env = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
string path = Path.Combine(env, Company);
return new DirectoryInfo(path);
}
}
/// <summary>
/// Common to all users data file.
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static FileInfo CommonDataFile(params string[] path)
{
string fullName = Paths.Combine(CommonDataDirectory.FullName, path);
return new FileInfo(fullName);
}
ユーザーの設定ディレクトリ:
/// <summary>
/// User's common data directory
/// </summary>
/// <returns></returns>
public static DirectoryInfo UserDataDirectory
{
get
{
string env = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string path = Path.Combine(env, Company);
return new DirectoryInfo(path);
}
}
/// <summary>
/// File in user's common data directory
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public static FileInfo UserDataFile(params string[] path)
{
return new FileInfo(Paths.Combine(UserDataDirectory.FullName, path));
}
プログラム ディレクトリ: (プログラム/実行可能ファイルが実行されている場所)
public static DirectoryInfo ProgramDirectory
{
get
{
string executablePath = System.Windows.Forms.Application.StartupPath;
return new DirectoryInfo(executablePath);
}
}
/// <summary>
/// Get's the file in the exectuable's directory, which would be
/// ProgramFiles/applicationName/filename
/// </summary>
public static FileInfo ProgramFile(params string[] path)
{
string file = Paths.Combine(ProgramDirectory.FullName, path);
return new FileInfo(file);
}
上記のコードで参照されているPaths クラスを次に示します。
もう1つ、特定のプログラム用にこれらからサブディレクトリを作成する必要があります。異なるプログラムが同じ名前のファイルを持ち、like Settings.xml
互いに競合しないようにするためです。
アプリケーション固有の場所に Company クラスを使用する ApplicationBase クラスがあります。例:
/// <summary>
/// The application's name
/// </summary>
public static string ApplicationName
{
get { return System.Windows.Forms.Application.ProductName; }
}
/// <summary>
/// Common to all users, application's data directory.
/// </summary>
public static DirectoryInfo CommonDataDirectory
{
get
{
string fullName = Path.Combine(Company.CommonDataDirectory.FullName, ApplicationName);
return new DirectoryInfo(fullName);
}
}
/// <summary>
/// Common to all users, file in application's data directory.
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static FileInfo CommonDataFile(params string[] name)
{
string fullName = Paths.Combine(CommonDataDirectory.FullName, name);
return new FileInfo(fullName);
}
残りの 2 つ (ユーザーとプログラムのディレクトリ プロパティとファイル メソッド) の作成はあなたに任せます。