Member 14633063 Ответов: 2

Надо переименовать файл txt в ini потом обратно в txt, чтобы получить доступ в VB.NET


Это загадка.

Я возился с System.IO.StreamReader.

Я создаю файл .txt с помощью блокнота. Попробуйте выполнить myStreamReader.ReadToEnd и получить
System.UnauthorizedAccessException: 'Access to the path 'D:\DriveD\Visual Studio\Documents\Uhhh.txt' is denied.'


Итак - используя Проводник Windows - я переименовываю файл в Uhhh.ini, а затем сразу же переименовываю его обратно в Uhhh.txt. Теперь я могу получить к нему доступ с помощью myStreamReader.ReadToEnd Если я затем открою его обратно в блокноте и сохраню, то снова получу ту же ошибку "отказано в доступе".

Я использую Visual Studio 2019 и Visual Basic.

Что я уже пробовал:

Подробно описано выше. Гугл ничем не помог.

Richard MacCutchan

Трудно понять, что происходит не так, но доступ к созданному блокнотом файлу должен быть довольно простым. Вам необходимо собрать дополнительную информацию о точном состоянии файла. Блокнот все еще держит файл открытым, когда вы пытаетесь получить к нему доступ?

Member 14633063

Статус Открытия или закрытия файла не имеет значения. Это переименование файла в Uhhh.ini, а затем обратно в Uhhh. ini. Uhhh.txt это позволяет обрабатывать его с помощью VB.Net.
После переименования он может быть открыт или закрыт в блокноте и VB.Сеть может получить к нему доступ.

Richard MacCutchan

Я только что попробовал это, и это работает правильно, независимо от того, открыт ли файл в блокноте или нет. Я могу только предположить, что ваш код делает что-то еще.

Member 14633063

Кроме того, я могу создать файл .txt с помощью wordpad или textpad, и его поведение будет точно таким же. Я не могу получить доступ с помощью myStreamReader.ReadToEnd. Как только я переименую файл в .ini и обратно в .txt stream reader сможет его прочитать.

0x01AA

Итак, каковы настройки безопасности (щелкните правой кнопкой мыши в проводнике, свойства, безопасность) после того, как вы переименуете его и снова сохраните в блокноте?

Member 14633063

Параметры безопасности для файла прямо из блокнота, а затем после его переименования с помощью Проводника Windows идентичны. Система и администраторы имеют полный контроль. Аутентифицированные пользователи могут изменять, читать и выполнять, читать и писать. Пользователи прочитали и выполнили, прочитали.
У меня есть текстовые файлы, с которыми я работаю.
И хотя вызов myStreamReader.ReadToEnd получает сообщение об ошибке "отказано в доступе" (по крайней мере, до тех пор, пока я не переименую) Я могу открыть файлы с помощью wordpad, notepad, textpad.

2 Ответов

Рейтинг:
10

Member 14633063

Я наконец-то понял свою проблему...

Я запускаю IObit Malware Fighter. Я сказал ему, чтобы он не защищал текстовые файлы, и все в порядке...

Теперь я немного раздражен IObit Malware Fighter, потому что он не дал мне знать, что блокирует доступ. За исключением одного раза - Сегодня вечером. И все равно странно, как переименование файла приведет к тому, что я получу доступ.

Я высоко ценю все усилия по этому вопросу.

Спасибо снова =:^)


Рейтинг:
1

RickZeeland

Вероятно, существует процесс, который все еще имеет открытый файл, если вы не можете найти виновника, то попробуйте один из этих инструментов:
Проводник Процессов - Windows Sysinternals | Microsoft Docs[^]
Монитор Процессов - Windows Sysinternals | Microsoft Docs[^]

А также посмотреть:
Как определить, какой процесс Windows блокирует файл или папку – справочный центр GSX[^]
SysInternals Pro: Понимание Монитора Процессов[^]