我已经用C#编写了代码。该代码将登录到以下文件:
我希望在系统启动时自动执行代码。因此,我编写了一个运行.exe文件的批处理文件,如下所示:
START 'C:\Debug\DiagnisticTool.exe'
而DiagnisticTool.exe是应用程序,它包含在C驱动器中名为'Debug'的文件夹中。批处理文件位于Windows启动文件夹中。
启动PC时,批处理文件正在运行,然后出现上述错误。这是用脚本代码编写文件的方式:
using (StreamWriter outputFile = File.AppendText("PerformanceLogFile.csv"))
{
outputFile.WriteLine(something to write to file);
}
但是该错误表明它尝试将其写到其他位置:'C:\ Windows \ system32'。
为什么?
当我通过Visual Studio或它创建的.exe应用程序运行该程序时,运行正常。另外,当我手动运行批处理文件时,它可以正常工作。唯一的问题是,它不会在启动时正常运行。
之所以这样,是因为当批处理程序调用您的程序时,当前文件夹不是您拥有可执行文件的文件夹,而Windows并不希望将当前目录更改为您的文件夹。唯一重要的是程序的可用性,并且因为您提供了START命令的完整路径,所以可以授予它。
您可以通过更改START命令并指定应在其中运行程序的文件夹来解决问题
START /D C:\Debug C:\Debug\DiagnisticTool.exe
或在运行文件之前添加CD命令
CD C:\DEBUG
START C:\DEBUG\DiagnosticTool.exe
或更改传递给StreamWriter的路径
using (StreamWriter outputFile = File.AppendText(@"C:\debug\PerformanceLogFile.csv"))
这最后一个选项虽然允许保留批次,但如果要自定义输出文件夹,可能会出现问题。例如,如果由于某种原因不允许您在目标计算机上创建C:\ DEBUG文件夹。