2015-10-19 386 views
0

我使用VB.NET語言在Windows 10與2015年VSVB文件夾:拒絕訪問(使用管理員權限)

我試圖做一個目錄,然後將文件從我的應用程序的資源文件夾複製到目錄

代碼:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim SubFolderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Main Folder\Sub Folder") 

    Directory.CreateDirectory(SubFolderPath) 

    'Error: access denied to "C:\Program Files\Main Folder\Sub Folder" 
    File.WriteAllBytes(SubFolderPath, My.Resources.exe1) 
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 

    File.WriteAllBytes(SubFolderPath, My.Resources.exe2) 
    File.WriteAllBytes(SubFolderPath, My.Resources.exe2dat) 
End Sub 

我得到的錯誤在上面的代碼中評價說,(我有管理員權限)

碼結果:創建的文件夾「C:\ Program Files文件\主文件夾\子Folde r「,但複製時訪問被拒絕。

我不知道爲什麼訪問被拒絕...你能幫助我嗎?

+0

這只是一個猜測......你有沒有嘗試設置目錄不是隻讀? –

+0

@KyleWilliamson nope ..怎麼樣?當我進入文件夾設置(在Windows資源管理器中)「蘆葦只」選項被自動選中,即使我刪除它.. –

+0

您是否嘗試添加反斜槓到「子文件夾」的結尾? –

回答

1

與您的代碼的問題是,你作爲的File.WriteAllBytes方法的第一個參數指定一個目錄名而不是文件名:

File.WriteAllBytes(SubFolderPath, My.Resources.exe1)` 

做這樣的事情加以糾正:

File.WriteAllBytes(SubFolderPath & "\exe1.exe", My.Resources.exe1) 
File.WriteAllBytes(SubFolderPath & "\exe2.exe", My.Resources.exe2) 
File.WriteAllBytes(SubFolderPath & "\exe2dat.dat", My.Resources.exe2dat) 

這不是Byte()的問題。無論何時將二進制exe文件導入到資源中,它都會以Byte()的形式存儲。你不必擔心這一點。

+0

我已經在使用最後一個代碼之前測試過了,再次嘗試測試..也許我錯過了代碼 –

+0

@NHK這是我的答案中提到的問題,導致錯誤。嘗試使用管理員權限:'File.WriteAllBytes(「D:\」,My.Resources.exe1)'。即使這會拋出「訪問被拒絕」異常。但試試「D:\ exe1」,它的作用就像魅力 –

+0

終於工作了,可能我錯過了\角色。我使用了上面發佈的代碼 –

相關問題