带有会话id的c#临时文件夹

  • 本文关键字:文件夹 会话 id c#
  • 更新时间 :
  • 英文 :


我有一个针对。net Framework 4.8的应用程序。当在远程桌面机器上的文件资源管理器中使用%temp%时,我将进入类似于以下路径的

C:UsersUserNameLocalTemp6,其中6为会话ID。

我的问题是,System.IO.Path.GetTempPath()方法返回这个值没有会话ID。然而,在。net 6中,它返回带有会话ID的值。

将项目升级到。net 6目前是不可能的,所以我想知道我还能如何解决这个问题?

我建议的解决方案是确定是否在远程会话中使用
[DllImport("user32")]
static extern bool GetSystemMetric(int indeX);
const int SM_REMOTESESSION = 0x1000;
var isRemoteSession = GetSystemMetrics(SM_REMOTESESSION);

然后我可以用Path.Combine()

将两者结合起来有没有更好的解决方案?

我没有要测试的远程机器,但我使用了Environment。ExpandEnvironmentVariables获取包含路径令牌的字符串的完整路径。

看看是否适合你。

string query = "%temp%";
string result = Environment.ExpandEnvironmentVariables(query);

正确返回Azure VM上的C:UsersusernameLocalTemp2和本地机器上的C:UsersusernameAppDataLocalTemp。我还在控制面板的环境变量中更改了我的Temp路径,它正确返回。