我有一个用 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%
允许吗?我正在使用 Windows 7,以防万一。