您可以依赖哪些Windows环境变量?

时间:2012-12-19 14:45:36

标签: .net windows environment-variables system-variable

我正在编写一个需要使用存储一些临时文件的应用程序(我通过环境变量找到临时位置)。

据我所知,环境变量是可变的,这意味着它们可能存在也可能不存在,但有哪些比其他更安全依赖于那里?

例如我可以在Windows 7上使用APPDATA,但我相信它不一定在Windows XP上。

3 个答案:

答案 0 :(得分:2)

我建议您使用.NET API可以提供的一些支持,而不是直接使用环境。临时文件有两个功能:

  1. Path.GetTempPath()返回当前用户临时文件夹的路径。

  2. Path.GetTempFileName()在用户的临时文件夹中创建一个具有唯一名称的空文件。

  3. 实际上使用Windows GetTempPath function使用环境找到临时文件夹。通常,文件夹为C:\Users\UserName\AppData\Local\Temp

    如果您想要自己使用的应用程序特定文件夹,可以使用特殊文件夹:

    const String CompanyName = "Acme Industries";
    const String ApplicationName = "FooBar";
    var subfolderName = Path.Combine(CompanyName, ApplicationName);
    var folderName = Path.Combine(
      Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
      subfolderName
    );
    Directory.CreateDirectory(folderName);
    

    通常,创建的文件夹名称为C:\Users\UserName\AppData\Acme Industries\FooBar。您的应用程序可以免费使用此文件夹,不会遇到“只读”问题。

    依靠标准API,您的应用程序可以在不同版本的Windows和不同环境(例如终端服务器)上可靠地运行。

答案 1 :(得分:0)

我强烈建议您不要将环境变量用于您的目的。

如果您确实认为必须使用环境变量,我建议您在可能需要使用的主机上手动定义这些变量。

不同的主机可能具有相同的环境变量,指向具有不同安全设置和不同用途的其他文件夹。

答案 2 :(得分:0)

您可以使用%temp%或以下代码作为文件路径:

string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".FileExtension";

string fileName = System.IO.Path.GetTempPath() + "FileName.FileExtension";

或尝试使用此链接创建临时文件: http://www.daveoncsharp.com/2009/09/how-to-use-temporary-files-in-csharp/