why to I get this error: System.UnauthorizedAccessException: 'C:\Windows\system32\CSV_file'
why to I get this error: System.UnauthorizedAccessException: 'C:\Windows\system32\CSV_file'
我用 C# 编写了代码。
代码正在登录以下文件:
- CPU 用法
- RAM 使用情况
- 网卡流量
- 当前时间
我希望在系统启动时自动执行代码。
所以我写了一个批处理文件,运行s .exe 文件是这样的:
START 'C:\Debug\DiagnisticTool.exe'
而 DiagnisticTool.exe 是应用程序,它包含在 C 盘名为 'Debug' 的文件夹中。
批处理文件位于 windows 启动文件夹中。
当我启动我的 PC 时,批处理文件 运行ning 出现了上述错误。
脚本代码中文件是这样写的:
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 文件夹或出于其他原因。
我用 C# 编写了代码。 代码正在登录以下文件:
- CPU 用法
- RAM 使用情况
- 网卡流量
- 当前时间
我希望在系统启动时自动执行代码。 所以我写了一个批处理文件,运行s .exe 文件是这样的:
START 'C:\Debug\DiagnisticTool.exe'
而 DiagnisticTool.exe 是应用程序,它包含在 C 盘名为 'Debug' 的文件夹中。 批处理文件位于 windows 启动文件夹中。
当我启动我的 PC 时,批处理文件 运行ning 出现了上述错误。 脚本代码中文件是这样写的:
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 文件夹或出于其他原因。