2012-05-05 15 views
4

テキストファイルを作成してこのファイルにテキストを書きたいが、コードでテキストファイルを作成できない。テキストファイルを作成して書き込む

エラーメッセージ:

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

私のコード:Windowsの、Cのルートのより新しいバージョンで

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

:ドライブは読み取り専用で、デフォルトで。ファイルを別のフォルダに入れてみてください。

+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