SetEnvironmentVariable做了什么

时间:2013-04-10 08:56:35

标签: c#

在我从其他人手中接过的网站上 - 在将水晶报告加载到报告查看器之前出现此行

System.Environment.SetEnvironmentVariable("TMP", @"C:\Temp");

它没有被再次提及 - 除了页面下方的错误消息,似乎只是报告'TMP'等于C:\ Temp

这条线实际上做了什么?

以下是完整代码:

ReportDocument ViewReport = new ReportDocument();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Page_Init(object sender, EventArgs e)
{
    try
    {
        string ReportPath = Server.UrlDecode(Request["Path"]);
        System.Environment.SetEnvironmentVariable("TMP", @"C:\Temp");
        ViewReport.Load(@ReportPath);
        ViewReport.SetDatabaseLogon(ConfigurationManager.AppSettings["ReportsUser"], ConfigurationManager.AppSettings["ReportsPassword"]);
        CrystalReportViewer1.Height = 640;
        CrystalReportViewer1.Width = 1100;
        CrystalReportViewer1.BestFitPage = false;
        CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
        CrystalReportViewer1.ReportSource = ViewReport;
        CrystalReportViewer1.RefreshReport();
    }
    catch (Exception err)
    {
        string Err = "Error :-" + err.Message;
        Err = Err + "Source :-" + err.Source;
        Err = Err + "Inner Error :-" + err.InnerException.Message.Replace("\r", "");
        Err = Err + "Path not found :-" + Server.UrlDecode(Request["Path"]);
        Err = Err + " TMP=" + System.Environment.GetEnvironmentVariable("TMP");
        string Message = "<script> alert(' " + Err + "');</script>";
        Response.Write(Message);
    }
}

3 个答案:

答案 0 :(得分:1)

环境变量是计算机上所有进程的全局变量。我会猜测并说你的报告查看器需要存储临时文件。它会向操作系统询问存储它们的位置。操作系统将查找其变量,在本例中为一个名为“TMP”的变量,并将其值返回给报表查看器。然后,报表查看器会愉快地将其临时文件存储在那里。

该行告诉操作系统存在一个变量名称TMP,其值为C:\ Temp。

报告查看器可能会要求操作系统继续使用TMP的值。

答案 1 :(得分:0)

环境变量是应用程序确定例如某个目录的路径而不明确知道这些目的的一种方式 例如,如果您有一个程序需要解压缩临时文件来执行installtion-routine,它可以向系统询问环境变量TMP并从系统获取路径。这使得应用程序独立于实际系统,因为某人可能有一个名为TMP的{​​{1}} - directoy,而其他人可能会在C:\Temp上拥有该名称。

来自Wikipedia

D:\Temp

答案 2 :(得分:0)

  

环境变量

环境变量是一组动态命名值,可以影响运行进程在计算机上的行为方式。

在某种意义上,可以说它们可以创建进程运行的操作环境。例如,具有标准名称的环境变量可以存储特定计算机系统用于存储临时文件的位置 - 这可能因计算机系统而异。通过(标准)名称调用环境变量的进程可以确保它将临时信息存储在存在且预期有足够空间的目录中。[1] 在几乎所有操作系统中,每个进程都有自己的一组私有环境变量。默认情况下,创建进程时,它会继承其父进程的重复环境,但父进程在创建子进程时所做的显式更改除外。运行程序可以访问环境变量的值以进行配置。

环境变量的示例包括:

路径 - 列出shell搜索的目录,用户可以键入的命令,而无需提供完整路径。

Temp - 进程可以存储临时文件的位置

UserProfile - 指示用户主目录在文件系统中的位置。

AppData {DeveloperName \ AppName} - 用于存储应用程序设置。

  

Windows环境变量列表

ALLUSERSPROFILE

应用程序数据

CD

CLIENTNAME

CMDCMDLINE

CMDEXTVERSION

COMSPEC

COMMONPROGRAMFILES

计算机名

日期

的ErrorLevel

HOMEDRIVE

HOMEPATH

LOCALAPPDATA

LOGONSERVER

处理器数量

OS

路径

PATHEXT

处理器架构

处理器标识符

处理器级别

处理器版本

PROGRAMFILES

提示

随机

SESSIONNAME

系统驱动

SYSTEMROOT

温度

时间

TMP

USERDNSDOMAIN

用户网域

用户名

用户配置

WINDIR

  

全局我的意思是 - 通过设置'TMP'EvvironmentVariable来实现   “C:\ Temp”页面上显示Crystal Report中的Crystal Report   查看者,在另一个页面上,当调用Web服务时,   asp.net将临时序列化程序集保存在'C:\ Temp'中   在asp.net目录中?

临时文件夹只存储与流程相关的数据,不会存储程序集和其他内容。

更多http://environmentvariables.org/