Tim Norton Ответов: 3

Система.UnauthorizedAccessException


Я знаю, что однажды уже сталкивался с этим и исправлял его, но не могу найти ответа

У меня есть проект отлично работающий в режиме проектирования но после развертывания я получаю ошибку
Система.UnauthorizedAccessException: доступ к пути 'C:\Program файлы\...\Prison Alarm Manager\Errors\' отказано.

Я знаю, что ошибка исходит из этого кода, но не могу вспомнить, как ее исправить.

Dim fs As FileStream = New FileStream(Application.StartupPath & "\Errors\errlog.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite)



Полная процедура должна ли она помочь
Public Sub WriteToErrorLog(ByVal msg As String, ByVal stkTrace As String, ByVal title As String)

      'check and make the directory if necessary; this is set to look in the application
      'folder, you may wish to place the error log in another location depending upon the
      'the user's role and write access to different areas of the file system
      If Not System.IO.Directory.Exists(Application.StartupPath & "\Errors\") Then
          System.IO.Directory.CreateDirectory(Application.StartupPath & "\Errors\")
      End If


      'check the file
      Dim fs As FileStream = New FileStream(Application.StartupPath & "\Errors\errlog.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite)
      Dim s As StreamWriter = New StreamWriter(fs)
      s.Close()
      fs.Close()

      'log it
      Dim fs1 As FileStream = New FileStream(Application.StartupPath & "\Errors\errlog.txt", FileMode.Append, FileAccess.Write)
      Dim s1 As StreamWriter = New StreamWriter(fs1)
      s1.Write("Title: " & title & vbCrLf)
      s1.Write("Message: " & msg & vbCrLf)
      s1.Write("StackTrace: " & stkTrace & vbCrLf)
      s1.Write("Date/Time: " & DateTime.Now.ToString() & vbCrLf)
      s1.Write("===========================================================================================" & vbCrLf)
      s1.Close()
      fs1.Close()

  End Sub

3 Ответов

Рейтинг:
25

Sandeep Mewara

Вам необходимо предоставить соответствующие разрешения безопасности для папки, к которой вы пытаетесь получить доступ.

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


Nish Nishant

Причина моего голосования 5
Достойно пятерки!

Member 14924685

HEEELP Тенго ООН проблема меня ИНСТАЛЕ УНА приложение. у меня инфецте у ми в mismo Con в ООН вирус пункт CONTROLARME г когда HABRO ЭСЭ вирус меня Сальта CARPETA УНА DICIENDO Эсто ************** Depuración JIT-компилятором **** **********
Para habilitar la depuración Just In Time (JIT), el archivo de configuración de esta
aplicación o equipo (machine.config) debe tener el
доблесть jitDebugging establecido en la sección system.windows.forms.
La aplicación también se debe compilar con la depuración
хабилитада

Por ejemplo:

<конфигурация>
<system.windows.forms jitdebugging = "true">


Когда habilitada Эсте Ла depuración JIT-компилятором, cualquier excepción не controlada
se enviara al depurador JIT registrado en el equipo
en lugar de controlarlo mediante el cuadro de diálogo.


QUE HAGO COMO SULOCIONO ESTO QUIERO QUE ME APARESCA COMO A ESTA PERSONA

https://www.youtube.com/watch?v=IZ8dNaakb5M

GRACIAS POR SU TIEMPO XD XD

Рейтинг:
1

Tim Norton

Я исправил это, изменив путь, который я сохраняю из ProgramFiles в User/AppData

<pre lang="vb">Dim pAppPath As String
 pAppPath = Application.UserAppDataPath & "\Errors\errlog.txt"


 If Not System.IO.Directory.Exists(Application.UserAppDataPath & "\Errors\") Then
     System.IO.Directory.CreateDirectory(Application.UserAppDataPath & "\Errors\")
 End If

 'check the file
 Dim fs As FileStream = New FileStream(pAppPath, FileMode.Append, FileAccess.Write, FileShare.Write)
 Dim s As StreamWriter = New StreamWriter(fs)
 s.Close()
 fs.Close()


Рейтинг:
1

Member 14828891

Что я сделал, так это скопировал его в System32


CHill60

Скопировать "что" в System32?
В любом случае, в названии этой папки есть ключ к разгадке … Система. Вы не должны помещать свои файлы данных (или твой program files) там, так же как вы не должны пытаться записывать файлы данных (ошибок) во что-то под названием "Program Files"