2012-05-05 70 views
4

我想创建一个文本文件并将一些文本写入此文件,但我的代码无法创建文本文件。创建一个文本文件并写入它

错误消息:

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

我的代码:

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 

回答

3

在最近版本的Windows中,C的根:驱动器是只读的默认。尝试将该文件放在另一个文件夹中。

+0

它的工作! :]另外,如何在My Documents文件中创建txt文件? –

+1

'SaveFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);' – Isuru

+0

Dim fileLoc As String = SaveFileDialog1.InitialDirectory +“\ save.txt”?? –

0

如果你开始有点强迫症,并希望直接写入到C盘目录下,你可以使用这个:

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 
相关问题