VB.NET 2008, Windows 7 и сохранение файлов - PullRequest
1 голос
/ 18 мая 2010

Мы должны изучить VB.NET в течение семестра, мой опыт в основном связан с C # - не то, чтобы это имело значение для этой конкретной проблемы.

Я использовал самый простой способ сохранить файл с помощью .NET Framework, но Windows 7 не позволит мне сохранить файл где-либо (или где-нибудь, что я нашел). Вот код, который я использую для сохранения текстового файла.

Dim dialog As FolderBrowserDialog = New FolderBrowserDialog()
Dim saveLocation As String = dialog.SelectedPath
... Build up output string ...
Try
    ' Try to write the file.
    My.Computer.FileSystem.WriteAllText(saveLocation, output, False)
Catch PermissionEx As UnauthorizedAccessException
    ' We do not have permissions to save in this folder.
    MessageBox.Show("Do not have permissions to save file to the folder specified. Please try saving somewhere different.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch Ex As Exception
    ' Catch any exceptions that occured when trying to write the file.
    MessageBox.Show("Writing the file was not successful.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

Проблема заключается в том, что при использовании этого кода возникает исключение UnauthorizedAccessException независимо от того, где я пытаюсь сохранить файл. Я попытался запустить файл .exe от имени администратора и IDE от имени администратора.

Является ли Windows 7 чрезмерной защитой? И если да, что я могу сделать, чтобы решить эту проблему? В требованиях указано, что я могу сохранить файл!

Спасибо.

1 Ответ

2 голосов
/ 18 мая 2010

Этот код:

Dim dialog As FolderBrowserDialog = New FolderBrowserDialog()
Dim saveLocation As String = dialog.SelectedPath

Дает вам местоположение папки . Затем вы пытаетесь сохранить файл с тем же именем, что и папка . Вместо этого я предполагаю, что вы хотите сохранить файл внутри этой папки:

Dim saveLocation As String = dialog.SelectedPath
saveLocation = Path.Combine(saveLocation, "SomeFile.txt")

Это создаст файл с именем SomeFile.txt внутри выбранной папки.

В качестве альтернативы, вместо использования FolderBrowserDialog для выбора папки, используйте SaveFileDialog , чтобы выбрать действительный файл вместо этого.

...