【问题标题】:VB Folder: Access Denied (with admin rights)VB 文件夹:拒绝访问(具有管理员权限)
【发布时间】:2016-01-18 09:05:40
【问题描述】:

我在带有 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”,但复制时访问被拒绝。

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

【问题讨论】:

  • 这只是一个猜测...您是否尝试将目录设置为非只读?
  • @KyleWilliamson nope.. 怎么样?当我输入文件夹设置(在 Windows 资源管理器中)时,即使我将其删除,也会自动选择“仅芦苇”选项..
  • 您是否尝试在“子文件夹”的末尾添加反斜杠?
  • @Kyle 发生了同样的事情
  • 好的。试着和你一起解决这个问题。您是否尝试过在其他区域创建目录?也许是我的文档?

标签: vb.net desktop-application


【解决方案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()。你不必担心。

【讨论】:

  • 我在使用最后一个代码之前已经测试过这个,再次测试..也许我错过了代码中的某些内容
  • @NHK 这是我的回答中提到的导致错误的问题。尝试使用管理员权限:File.WriteAllBytes("D:\", My.Resources.exe1)。即使这样也会抛出“拒绝访问”异常。但是尝试“D:\exe1”,它就像一个魅力
  • 终于工作了,可能我错过了 \ 字符。我使用了你上面发布的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2018-12-27
相关资源
最近更新 更多