2012-05-05 6 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

это работает! :] Также, как создать файл txt в файле My Documents? –

+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 
Смежные вопросы