Create a text file and write to it.

I want to create a text file and write text to this file, but my code cannot create a text file.

Error message:

UnauthorizedAccessExcepion was unhandled by user code Access to the path 'c:\save.txt' is denied. 

My code is:

  Dim fileLoc As String = "c:\save.txt" Dim fs As FileStream = Nothing If (Not File.Exists(fileLoc)) Then fs = File.Create(fileLoc) Using fs End Using End If If File.Exists(fileLoc) Then Using sw As StreamWriter = New StreamWriter(fileLoc) a = "Test: " + TextBox1.Text c = "==============================================" sw.Write(a) sw.Write(c) End Using End If 
+4
source share
2 answers

In a later version of Windows, the root of the C: drive is read-only by default. Try placing the file in a different folder.

+3
source

If you're a little intrusive and want to write to the C drive directory directly, you can use this:

 Imports System.Security.Principal Module VistaSecurity 'Declare API Private Declare Ansi Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer Private Const BCM_FIRST As Int32 = &H1600 Private Const BCM_SETSHIELD As Int32 = (BCM_FIRST + &HC) Public Function IsVistaOrHigher() As Boolean Return Environment.OSVersion.Version.Major < 6 End Function ' Checks if the process is elevated Public Function IsAdmin() As Boolean Dim id As WindowsIdentity = WindowsIdentity.GetCurrent() Dim p As WindowsPrincipal = New WindowsPrincipal(id) Return p.IsInRole(WindowsBuiltInRole.Administrator) End Function ' Add a shield icon to a button Public Sub AddShieldToButton(ByRef b As Button) b.FlatStyle = FlatStyle.System SendMessage(b.Handle, BCM_SETSHIELD, 0, &HFFFFFFFF) End Sub ' Restart the current process with administrator credentials Public Sub RestartElevated() Dim startInfo As ProcessStartInfo = New ProcessStartInfo() startInfo.UseShellExecute = True startInfo.WorkingDirectory = Environment.CurrentDirectory startInfo.FileName = Application.ExecutablePath startInfo.Verb = "runas" Try Dim p As Process = Process.Start(startInfo) Catch ex As Exception Return 'If cancelled, do nothing End Try Application.Exit() End Sub End Module 
0
source

Source: https://habr.com/ru/post/1410811/


All Articles