2015-10-19 4 views
0

Я использую VB.NET язык на окнах 10 с VS 2015VB Папка: Access Denied (с правами администратора)

Я пытаюсь создать каталог, а затем скопировать файл из папки ресурсов моего приложения в том, что каталог

код:

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 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 это проблема, упомянутая в моем ответе, которая вызывает ошибку. Попробуйте с admin privilleges: 'File.WriteAllBytes (" D: \ ", My.Resources.exe1)'. Даже это приведет к исключению «Отказано в доступе». Но попробуйте «D: \ exe1», и он работает как шарм. –

+0

работал наконец, возможно, мне не хватало символа \. Я использовал код, который был опубликован выше. –

Смежные вопросы