C#で記述されたアプリケーションがあり、アプリケーションのフロントエンドとバックエンドの両方から同じ接続文字列にアクセスするために、非表示のProgramDataに情報を書き込もうとしています。
次のようにパス変数を使用してディレクトリにアクセスしています。
private bool ProgramDataWriteFile(string contentToWrite)
{
try
{
string strProgramDataPath = "%PROGRAMDATA%";
string directoryPath = Environment.ExpandEnvironmentVariables(strProgramDataPath) + "\\MyApp\\";
string path = Environment.ExpandEnvironmentVariables(strProgramDataPath)+"\\MyApp\\ConnectionInfo.txt";
if (Directory.Exists(directoryPath))
{
System.IO.StreamWriter file = new System.IO.StreamWriter(path);
file.Write(contentToWrite);
file.Close();
}
else
{
Directory.CreateDirectory(directoryPath);
System.IO.StreamWriter file = new System.IO.StreamWriter(path);
file.Write(contentToWrite);
file.Close();
}
return true;
}
catch (Exception e)
{
}
return false;
}
これは正しく機能しているようです。しかし、私の質問は、このパス変数を使用したときに、%AllUsersProfile%(%PROGRAMDATA%)
代わりに、不正な(そして冗長な)ファイルパスに展開されたということです:C:\ProgramData(C:\ProgramData)\
しかし、後者のパス変数は正しいフルネームだと思いました。間違って使っただけですか?この接続情報にすべてのユーザーがアクセスできるようにする必要がありますが、それを使用%PROGRAMDATA%
するだけですか?関連する場合に備えて、Windows7を使用しています。