Создание файла TXT и его сохранение на DISK C: с использованием system.io, но доступ запрещен - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь создать файл TXT, используя system.io, я указываю путь к файлу, но каждый раз, когда я запускаю его, мой доступ запрещается, к каждой папке i C: в DISK 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 (String path) в KeyLoggerA1.Program.Main (String [] args) в C: \ Users \ mirer \ source \ repos \ ConsoleApp2 \ ConsoleApp2 \ Program.cs: line 28

Если кто-то может помочь, он будет признателен

Ответы [ 3 ]

0 голосов
/ 27 апреля 2020

Программа не имеет необходимых прав для записи в пункт назначения. Попробуйте вместо этого запустить программу от имени администратора или сохранить в другом месте (я знаю, что вы пытаетесь сохранить в программных файлах, поэтому вы не сможете сохранить в другом месте)

0 голосов
/ 27 апреля 2020

Я думаю, вы сделаете его своим, если у вас есть папка в c для вашего текстового файла, вы сделаете его настройками аутентификации, брат

0 голосов
/ 27 апреля 2020

Обязательно используйте System.IO.Path.Combine(), так как это правильный способ объединения путей к файлам.

Теперь по вашему вопросу, , что совершенно нормально . Вам просто нужно поднять программу (запустить от имени администратора), чтобы иметь доступ к этой папке. Если вы хотите проверить, запущена ли программа в качестве администратора или нет, проверьте это , и это

...