Ошибка System.UnauthorizedAccessException" в mscorlib.dll в приложении в win 10

119
24 января 2021, 15:10

Есть мое приложение. которое работает, и вот в него добавлю механизм записи технической информации. Система win 10, лог пишется в папку c:WI\debug\ Проблема в том, что как работает сам модуль записи я вижу все прекрасно, но лог файл всегда остается пустой. Прочитав про эту ошибку я изменил права доступа на папку на запись и чтение, нахожусь под учеткой администратора и студию запускаю с правами администратора.Но увы ошибку не могу победить. (Так же возникает вопрос. если я запускаю приложение в студии оно тоже в режиме администратора или нет, так как студия сама запущена с правами администратора.) На всякий случай вот так я делаю эту запись.

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Reflection;
namespace Utils
{
    public class DebugModule
    {
        private static bool needdebuginfo = false;
        private static bool init = false;
        public static bool NeedDebugInfo
        {
            get
            {
                if (!init)
                {
                    needdebuginfo = System.IO.Directory.Exists("c:\\WIdebug\\debug\\") || System.IO.File.Exists("c:\\WI\\debug");
                    init = true;
                }
                return needdebuginfo;
            }
            set
            {
                needdebuginfo = value;
            }
        }
        private static bool warnshowed=false;
        public static void WriteDebugMessage(Func<string> GetMessage)
        {
            try
            {
                if (NeedDebugInfo)
                {
                    if (!warnshowed)
                    {
                        warnshowed = true;
                        if (MessageBox.Show("Включен режим отладки, продолжить работу в этом режиме","Внимание!!!",MessageBoxButtons.OKCancel)==DialogResult.Cancel)
                        {
                            try {
                                System.IO.Directory.Delete("c:\\WI\\debug");
                            }
                            catch
                            { }
                            try
                            {
                                System.IO.File.Delete("c:\\WI\\debug");
                            }
                            catch { }
                            needdebuginfo = false;
                            return;
                        }
                    }
                    System.IO.File.AppendAllText("c:\\WI\\debug"
                        , string.Format("NewLine {0}@#${1}@#${2}@#${3}@#${4}@#${5}@#${6}@#${7}@#${8}@#${9}@#${10}@#${11}\r\n"
                        , SystemTime.Current.ToString("dd.MM.yyyy HH:mm:ss.fffffff")
                        , GetMessage()
                        , Environment.MachineName
                        , Environment.UserDomainName
                        , Environment.UserName
                        , Environment.Version
                        , Environment.OSVersion
                        , Environment.Is64BitProcess
                        , Environment.Is64BitOperatingSystem
                        , Environment.CurrentDirectory
                        , Application.ProductVersion
                        , Assembly.GetExecutingAssembly().GetName().Version));
                }
            }
            catch (Exception)
            {
            }
        }
        public static void WriteDebugMessage(string format,params object[] args)
        {
            WriteDebugMessage(() => { return string.Format(format, args); });
        }
        public static void WriteDebugMessage(string message)
        {
            WriteDebugMessage(() => { return message; });
        }
        public static void WriteDebugMessage(Exception e)
        {
            WriteDebugMessage("{0}",e);
        }

    }
}
Answer 1

Я подозреваю, что ошибка тут:

 System.IO.Directory.Delete("c:\\WI\\debug");

Ниже через System.IO.File.AppendAllText вы создаете файл c:\WI\debug, а пытаетесь удалить директорию.

READ ALSO
Как отключить полосы прокрутки у FlowDocumentScrollViewer в WPF?

Как отключить полосы прокрутки у FlowDocumentScrollViewer в WPF?

Как отключить полосы прокрутки у FlowDocumentScrollViewer в WPF?

95
Как отсортировать двусвязный список SplDoublyLinkedList?

Как отсортировать двусвязный список SplDoublyLinkedList?

Есть двусвязный список который мне нужно отсортировать за O(n Log n) времяЯ бы хотел использовать merge sort, но я никак не могу сообразить, как это...

121
Call to a member function find() on boolean

Call to a member function find() on boolean

Использую библиотеку simple_html_domСчитываю csv файл

104
Уведомления с сайта в telegramm

Уведомления с сайта в telegramm

Использую onesignal для уведомлений через сайт

145