VB文件夹:访问被拒绝(具有管理员权限)

时间:2015-10-19 21:27:32

标签: vb.net desktop-application

我在使用VS 2015的Windows 10上使用VB.NET语言

我尝试制作目录,然后将文件从我应用的资源文件夹复制到该目录

代码:

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 \ Main Folder \ Sub Folder"但在复制时访问被拒绝。

我不知道为什么拒绝访问...你能帮帮我吗?

1 个答案:

答案 0 :(得分:2)

您的代码的问题是您指定目录名而不是文件名作为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()。你不必担心。