Способы организации файловых операций. Грамотная работа с файлами: исключительная блокировка файлов

Блокировки файлов

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

Процeссы могут имeть соотвeтствующиe права доступа к файлу, но одноврeмeнноe использованиe этих прав (в особeнности права записи) можeт привeсти к нeкоррeктным рeзультатам. Примeром такой ситуации являeтся одноврeмeнноe рeдактированиe одного и того жe докумeнта нeсколькими пользоватeлями. Eсли доступ к файлу нe управляeтся блокировками, то каждый пользоватeль, который имeeт право записи в файл, работаeт со своeй копиeй данных файла. Рeзультат такого рeдактирования нeпрeдсказуeм -- он зависит от того, в какой послeдоватeльности записывали измeнeния в файл примeняeмыe пользоватeлями приложeния-рeдакторы.

Многопользоватeльскиe опeрационныe систeмы обычно поддeрживают спeциальный систeмный вызов, позволяющий программисту установить и провeрить блокировки на файл и eго отдeльныe области. В UNIX такой систeмный вызов называeтся fcntl. В eго аргумeнтах указываeтся дeскриптор файла, для которого нужно установить или провeрить блокировки, тип опeрации (блокированиe или провeрка, блокированиe доступа для чтeния или для записи), а такжe область блокирования -- смeщeниe от начала файла и размeр в байтах. При провeркe наличия блокировок, установлeнных другими процeссами, вызов fcntl нeмeдлeнно возвращаeт управлeниe с сообщeниeм рeзультата. При установкe блокировки можно задать два рeжима работы систeмного вызова: с пeрeходом процeсса в состояниe ожидания в том случаe, eсли блокировку установить нeвозможно (синхронный систeмный вызов), и с нeмeдлeнным возвратом в такой ситуации с сообщeниeм отрицатeльного рeзультата (асинхронный вызов). Запрошeнная блокировка записи нe можeт быть установлeна в том случаe, eсли другой процeсс ужe установил свою блокировку записи на тот жe файл. То eсть блокировка записи являeтся исключитeльной. Блокировки чтeния нe являются исключитeльными и могут устанавливаться на файл в том случаe, eсли их области дeйствия нe пeрeкрываются. Eсли на какую-то область файла установлeна блокировка чтeния, то на эту область нeльзя установить блокировку записи. В UNIX сущeствуют два рeжима дeйствия блокировок -- консультативный (advisory) и обязатeльный (mandatory). Основным рeкомeндуeмым для использования рeжимом являeтся консультативный. При нeм опeрационная систeма нe занимаeтся блокированиeм опeраций с файлом, а только устанавливаeт признаки блокирования областeй в структурах file, поддeрживающих опeрации с файлами. Коопeрирующиeся процeссы обязатeльно должны провeрять наличиe блокировок на файл, чтобы синхронизировать свою работу. Eсли жe блокировки установлeны, но процeсс нe провeряeт их, то опeрационная систeма нe запрeщаeт доступ процeсса к файлу, когда процeсс дeлаeт систeмныe вызовы read или write.

В обязатeльном рeжимe запрeт на выполнeниe опeрации с заблокированным файлом поддeрживаeт опeрационная систeма, поэтому процeсс в любом случаe нe получит доступа к такому файлу. Однако при работe в этом рeжимe опeрационная систeма тратит много усилий и врeмeни на eго поддeржаниe, поэтому обычно он нe рeкомeндуeтся.

Непосредственное использование в Unix только функций открытия, закрытия, записи в файл и чтения из файла не обеспечивает полных возможностей совместного использования файлов. Для управления совместным доступом к открытым файлам Unix содержит дополнительные средства, обеспечиваемые через системную функцию fcntl. Функция эта имеет прототип

int fcntl(int handle, int cmd, . . .).

Параметр cmd задает операции, которые необходимо выполнить над файлом, указанным аргументом handle . Третий аргумент этой функции, который может быть указан после cmd , зависит от конкретного значения операции cmd . Имеется целый ряд возможных значений для аргумента операции функции fcntl, но большинство из них не будет рассматриваться здесь. Ограничимся только значениеми, относящимися к взаимной блокировке файлов и их записей. В этом случае функция fcntl приобретает вид

int fcntl(int handle, int cmd, struct flock *ldata).

Для этого варианта имеем три основных значения аргумента cmd . Они обозначаются символическими константами F_SETLK, F_SETLKW и F_GETLK. Структуры flock данных описываются в заголовочном файле в виде

{short l _type; // тип блокировки

short l _whence; // код базовой позиции для отсчета смещения

off_t l _start; // смещение относительно базовой позиции

off_t l _len; // сколько байтов находится в заблокированной области

pid_t l _pid; // PID процесса, который блокировал файл

Сами символические константы операций блокировок обозначают следующее. Константа F_SETLK задает попытку применить блокировку к файлу и немедленно возвратить управление либо же отменить блокировку, если это действие задано типом блокировки, равным F_UNLCK. При неудачной попытке наложения блокировки с операцией, заданной константой F_SETLK, функция fcntl возвращает код -1. Константа F_SETLKW приказывает попытаться применить блокировку к файлу и приостановить работу, если блокировка уже наложена другим процессом. Константа F_GETLK делает запрос на получение описания блокировки, отвечающей данным в аргументе ldata (возвращаемая информация описывает первую блокировку, препятствующую наложению блокировки, которая задается структурой ldata ).

Код базовой позиции для отсчета смещения задает либо начальную позицию в файле (константой SEEK_SET), либо текущую позицию в нем (константой SEEK_CUR), либо позицию конца файла (константой SEEK_END).

В пояснение описанных деталей отметим, что средства Unix позволяют управлять совместным доступом не только ко всему файлу, но и к отдельным участкам его. В частности, разрешить другим процессам только читать отдельные участки файла, а другим, может быть, разрешить изменять их. Поэтому указанные средства содержат не только указание разрешения вида доступа или соответственно запрета (блокировки) доступа, но и описание участка, к которому относится такой запрет. Именно с этой целью в состав структуры flock включены поля l_whence , l_start , l_len , причем поле l_len задает длину участка, на который распространяется действие конкретного вызова функции fcntl ; поле l_start задает начальное смещение рассматриваемого участка относительно точки позиции, указанной параметром l_ whence . Последний, в свою очередь, значениями констант задает отсчет позиции относительно начала файла, относительно текущего положения указателя позиции в нем или относительно конца файла. В качестве указанных констант могут быть взяты соответственно значения 0, 1, 2 или именованные константы SEEK_SET, SEEK_CUR, SEEK_END из заголовочного файла stdio.h. Поле l_len может быть задано числом 0, тогда блокировка распространяется от указанного в структуре начала файла до его конца (причем при дальнейшем увеличении файла в процессе работы с ним эта блокировка распространяется дальше – до текущего конца файла).



В структуре данных flock тип блокировки, указываемый полем l_type , задается символическими константами, предварительно описанными в заголовочном файле. Эти константы следующие: F_RDLCK – установить на указанную в структуре область данных блокировку чтения; F_WRLCK – установить на указанную в структуре область данных блокировку записи; F_UNLCK – снять блокировку с указанной области. Функция fcntl может быть использована многократно для различных участков файла и для них с ее помощью могут быть установлены, изменены или сняты определенные виды блокировок.

Блокировка по чтению (константой F_RDLCK) может быть установлена только в том случае, если файл, на который она устанавливается текущей программой, открыт для чтения (т.е. с режимом O_RDONLY или O_RDWR). Блокировка по записи (константой F_WRLCK) может быть установлена только, если файл, на который она устанавливается текущей программой, открыт данной программой для записи (т.е. с режимом O_WRONLY или O_RDWR).

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

Блокировка по чтению на участок файла может устанавливаться независимо различными процессами, но блокировку по записи может установить только один процесс. Попытки других процессов установить такую блокировку, пока она не снята процессом, установившем ее, оказываются неудачными. Эта неудача проявляется в том, что при использовании операции SETLK функция fcntl возвращает значение ‑1, а при использовании операции SETLKW в функции fcntl процесс приостанавливается до снятия блокировки другим процессом.

Заметим, что блокировка посредством вызова функции fcntl действует только, если ее использование систематически применяется всеми программами, обращающимися к файлу. Если некоторая программа обращается к тому же файлу операциями read или write без предварительных операций fcntl в попытках установить блокировку, то, к сожалению, никаких блокировок, предохраняющих несогласованное использование файла, не реализуется.

Следующая программа, приведенная листингом 2.4.1, демонстрирует использование функций открытия файла, закрытия файла, записи в файл, задание ограничения совместного доступа и аналогична по выполняемым действиям программе в листинге 2.3.1, написанной для другой ОС.

#include

#include

{char buffer="Было прочитано ";

int fhandle;int fhandle;

char fname="myresult.txt";

struct flock lock={F_WRLCK, SEEK_SET, 0, 0};

fhandle=open(fname, O_WRONLY | O_CREAT | O_TRUNC, 0600);

fcntl(fhandle, F_SETLKW, &lock);

write(1, "Vvedite\n",8);

len=read(0, buffer+16, 80); // записываем вводимое после начального текста

write(fhandle, buffer, 16+len);

lock.l_type=F_UNLCK;

fcntl(fhandle, F_SETLK, &lock);

Листинг 2.4.1. Программа ограничения доступа к файлу в Unix

В этом примере значение поля l_type структуры данных lock типа flock задается равным константе F_WRLCK, т.е. указывается блокировка при записи данной программой, которая равносильна запрету как по чтению, так и по записи для других процессов. Начальный адрес участка задается на основе начальной позиции в файле (константа SEEK_SET в поле l_whence ) со смещением в l_start , равным нулю, т.е. указывается, что управляемый участок начинается с самого начала файла. Значение поля l_len задано нулевым, что равносильно указанию распространения действий до конца файла. Таким образом указано, что воздействию запрета на доступ для других процессов подлежит весь файл. Рассматриваемый запрет на запись осуществляется вызовом функции fcntl(fhandle, F_SETLKW, &lock) сразу после открытия файла. Если в последующие моменты времени до снятия этой блокировки другой процесс выполняет аналогичную функцию fcntl(fhandle, F_SETLKW, &lock), то он приостанавливается на этой функции до тех пор, пока блокировка не будет снята.

После записи в файл функция write задает отмену запрета на запись, установленного данным процессом. С этой целью выполняется функция fcntl(fhandle, F_SETLK, &lock), в параметре lock которой задано поле l_type , равное константе F_UNLCK, т.е. указывается отмена блокировки (того же участка, что и раньше был указан в этой структуре).

Заметим, что если не требуется принимать мер по управлению совместным использованием файла, то в программе для Unix достаточно просто не использовать функцию fcntl для этих целей. В частности, для упрощения рассматриваемого примера можно было отбросить из программы вызовы функции fcntl , описание и установки полей экземпляра lock структуры flock . В программах же для операционных систем MS Windows и OS/2 во всех случаях приходится использовать те же функции, что и в более сложном случае, причем с заданием всех их параметров.

В операционных системах Windows для блокировки участков файлов предназначена функция, имеющая прототип

BOOL LockFile(HANDLE hFile,

DWORD nNumberOfBytesToLockHigh).

Данная функция при удачном выполнении блокирует доступ к указанному в ней участку для всех других процессов. Эта функция предназначена в общем случае для работы с очень большими файлами, размер которых превосходит числа, задаваемые в формате DWORD (более чем 32-битные двоичные числа, что соответствует границе в 4Гбайта). Поэтому для задания смещения блокируемого участка используются два аргумента FileOffsetLow и FileOffsetHigh , задающие младшую и старшую части такого смещения. Аналогичным образом для задания числа байтов в блокируемом участке предназначены два аргумента nNumberOfBytesToLockLow и nNumberOfBytesToLockHigh , также задающие младшую и старшую части этого числа.

Удалось или нет заблокировать запрошенный участок, программа определяет по возвращаемому функцией LockFile логическому значению. При неудачном задании блокировки выполняемая программа не приостанавливается сама по себе, но для этого требуется выполнение дополнительных операторов, вызывающих системные функции, которые рассмотрим впоследствии. (Простейшим, но не эффективным решением являются многократные попытки успешно выполнить функцию блокировки LockFile до тех пор, пока она не вернет значение, свидетельствующее о успешно установленной блокировке.)

Обратной к функции LockFile является системная функция UnlockFile, которая имеет прототип

BOOL UnlockFile(HANDLE hFile,

DWORD FileOffsetLow, DWORD FileOffsetHigh,

DWORD cbUnlockLow, DWORD cbUnlockHigh),

где аргументы по своему назначению совпадают с уже рассмотренными в функции LockFile. Данная функция снимает блокировку с указанного в ней участка, давая тем самым свободный доступ к нему, если это, конечно, согласуется с общими режимами доступа для других процессов, определяемыми аргументом ShareMode в функции открытия файла CreateFile.

Кроме двух рассмотренных функций, предназначенных для управления блокировкой отдельных участков в Windows, эта ОС содержит несколько позже добавленные в нее функции, которые дают возможности расширенного управления выборочной блокировкой. Это – функции LockFileEx и UnlockFileEx, которые имеют прототипы

BOOL LockFileEx(HANDLE hFile, DWORD Flags,

DWORD dwReserved,

DWORD nNumberOfBytesToLockLow,

DWORD nNumberOfBytesToLockHigh,

LPOVERLAPPED lpOverlapped)

BOOL UnlockFileEx(HANDLE hFile, DWORD dwReserved,

DWORD nNumberOfBytesToUnlockLow,

DWORD nNumberOfBytesToUnlockHigh,

LPOVERLAPPED lpOverlapped).

По существу эти расширенные функции очень похожи на только что рассмотренные, но позволяют более сложное управление блокировкой за счет параметра Flags, в котором может находиться одна из следующих констант:

LOCKFILE_FAIL_IMMEDIATELY

LOCKFILE_EXCLUSIVE_LOCK

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

В двух последних функциях значение смещения рассматриваемого участка файла размещается внутри структуры данных, задаваемых последним аргументом. Как видим, полноценное блокирование участков файлов в ОС типа Windows задается в действительности еще сложней чем в Unix.

С каждым днем использования компьютера, на нем появляется все больше различных программ или файлов. Некоторые установлены самим пользователем, а некоторые ставятся без нашего согласия. Но, когда приходит время чистки компьютера при попытке удаления файла, появляется ошибка с текстом, что файл открыт в другой программе или заблокирован.

Сейчас, я Вам покажу один из вариантов, как можно удалить заблокированные файлы. Кончено же, мы с вами не будем искать, что именно блокирует файл или в какой программе он открыт. Да и сделать это будет непросто. Для всего этого мы воспользуемся сторонней программой под название Unlocker, которую скачать Вы сможете .

При удаление каких либо файлов, будьте внимательны, и лучше убедитесь в том, что Вы знаете, что удаляете и что это точно не навредит операционной системе.

Удаление заблокированных файлов программой Unlocker

Скачав Unlocker, нам нужно установить его на компьютер. Для этого запускаем наш файл и после чего нажимаем несколько раз кнопку «Далее». Исключение является только шаг, где нам предлагают установить «Delta Toolbar ». По умолчанию отмечен пункт «Quick», что повлечет за собой установку toolbara и замену домашней страницы на «Delta». Но, так как нам это не нужно, отмечаем «Advanced » и убираем галочки которые находятся ниже, затем переходим к следующему этапу установки. После окончания копирования и установки файлов жмем «Готово».

Теперь осталось ею только воспользоваться, находим файл который мы хотим удалить, и правым кликом вызываем меню, где и находим пункт «Unlocker»

После нажатия появится окно с выбором действия. Если Вы хотите удалить файл, соответственно выбираем «Удалить » и нажимаем «ОК »

Так же, с помощью этой программы можно переименовать заблокированный файл. Выбрав «Переименовать», появится дополнительное окошко где нужно указать имя документа и после нажатия «ОК», название документа или папки изменится.

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

Как удалить заблокированный в системе Windows файл или папку? Начнем с того, что не каждый файл или папку нужно удалять: так, например, важные файлы самой Windows защищены от пользовательского вмешательства, и для их удаления потребуется запросить разрешение от TrustedInstaller – скрытой системной учетной записи, которая на голову выше любой учетной записи администратора. Если речь идет о редких случаях осознанного и контролируемого процесса удаления файлов или папок, которому препятствует системное уведомление «Запросите разрешение от TrustedInstaller», полный доступ с разрешением TrustedInstaller можно получить в свойствах удаляемой папки или файла.

Удаление заблокированных несистемных файлов и папок (пользовательских или рабочих данных стороннего ПО) – процедура менее опасная, и для этих целей существуют, соответственно, способы попроще. Один из них – закрытие процесса или программы, использующих удаляемый файл.

Если удаляемые файл или папка используются активным процессом, который нельзя завершить в работающей Windows с помощью диспетчера задач, решить вопрос с удалением можно:

Перезагрузив систему;

В безопасном режиме работы Windows;

Загрузившись с Live-дисков или даже обычного установочного носителя Windows;

В другой Windows или иной операционной системе, установленной на другом разделе или диске компьютера.

Но гораздо проще удалить заблокированный файл или папку при помощи специальных утилит – минималистичных программок для разблокировки данных. В отдельных случаях они не решат вопрос без перезагрузки Windows, но точно избавят от необходимости загружаться с других носителей или другой операционной системы. Не нужно будет даже самостоятельно выискивать программу или процесс, которые блокируют удаление, переименование или перемещение данных. Утилиты-разблокировщики сами закроют нужную программу или процесс. Естественно, при условии, что работа системы без блокирующего процесса возможна. Если нет, в таком случае обычно утилиты обещают, что удалят проблемный файл при следующей загрузке системы. Утилиты-разблокировщики, как правило, встраиваются в контекстное меню проводника системы, предлагая более удобный способ разблокировки файлов и папок, нежели форма их добавления в интерфейс самих утилит. Ниже рассмотрим тройку бесплатных утилит для удаления заблокированных в системе Windows файлов.

1. Unlocker

Unlocker – пожалуй, самая известная утилита из разряда разблокировщиков файлов. При ее запуске получим доступ к форме обзора в стиле проводника Windows для добавления файлов, которые нужно разблокировать, переименовать, переместить или удалить.

Работая с утилитой из контекстного меню, на заблокированном файле, соответственно, выбираем пункт «Unlocker».

Инсталлятор Unlocker настроен на установку в систему вместе с «довесками», необходимо внимательно отслеживать шаги мастера установки, чтобы убрать галочки попутного внедрения ненужного софта.

2. Lock Hunter

Утилита Lock Hunter от Unlocker отличается возможностью работы не только с файлами, но и с заблокированными папками. Lock Hunter предусматривает кнопку обзора внутри своего интерфейса для добавления заблокированных папок или файлов, утилита также встраивается в контекстное меню проводника Windows в виде вопроса «Что блокирует этот файл (папку)».

По итогу отображения заблокированных папки или файла в окне утилиты их можно разблокировать, удалить, переименовать, перенести, завершить используемый их процесс (если это возможно).

3. UnlockMe

Утилита UnlockMe, как и предыдущие участники обзора, работает с заблокированными папками и файлами как внутри собственного интерфейса, предусматривая кнопки добавления данных,

так и посредством опции в контекстном меню проводника Windows.

UnlockMe не предлагает функций удаления, переименования или перемещения файлов, утилита только проводит разблокировку файлов, завершая работу препятствующих программ или процессов (если это возможно). После разблокировки утилитой UnlockMe все нужные операции с папками и файлами осуществляются в проводнике или файловом менеджере.

Работая с ОС Windows, часто приходится сталкиваться с тяжело удаляемыми файлами. Если файл используется каким-то приложением, либо самой системой, обычным способом удалить его не получится. На многократные и нервозные нажатия клавиши «Delete» в лучшем случае система монотонно будет отвечать одно и то же: «Файл используется, и удалить его невозможно», при худших раскладах - компьютер зависнет.

Безусловно, это раздражает хотя бы по той простой причине, что в доме хозяином должен быть пользователь, а не искусственный интеллект с очередными заморочками от Microsoft. Как же решить эту проблему и удалить проблемный файл?

Самая простая причина блокировки файла – это работающее приложение, которое и блокирует его удаление.

Такое часто бывает, например, с загруженными торрент-клиентом файлами, когда раздача файла препятствует его удалению. Также нередко пользователи пытаются удалить открытый в офисном приложении документ. Решение проблемы в таких случаях очень простое – необходимо закрыть все приложения, которые могут воспроизводить или как-то задействовать удаляемый файл, немного подождать, чтобы приложение успело свернуть все активные процессы, и затем снова попытаться удалить файл.

Перезагрузка компьютера

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

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

Диспетчер задач Windows можно вызвать, введя «Диспетчер задач» в поле поиска меню «Пуск» и нажать «Enter», но есть и куда более простой способ – горячие клавиши «Ctrl+Shift+Esc». В списке работающих процессов Windows необходимо отыскать процессы приложений, которые могут использовать удаляемый файл, затем прекратить эти процессы с помощью соответствующей кнопки в окне диспетчера задач.

Этот способ подходит для более опытных пользователей, ведь проводя эксперименты с завершением различных системных процессов, возможно, далеко не тех, что требуются для разблокировки удаляемого файла, можно прекратить работу какого-то процесса, без которого система не сможет полноценно функционировать. Но даже если так и получится, не стоит переживать. В этом случае достаточно перезагрузиться, чтобы нужные системные процессы вновь начали свою работу.

Специальные программы для разблокировки файлов

Специальные небольшие програмы с одной-единственной функцией разблокировки файлов давно стали программами «Must Have» для большинства пользователей ОС Windows. Часто такие утилиты входят в состав файловых менеджеров в числе встроенного софта.

Unlocker или Lock Hunter – эти программы можно скачать в Интернете бесплатно, они минималистично и работают без каких-либо проблем.

Unlocker интегрируется с системой, и эту программу можно легко найти в контекстном меню. Чтобы удалить заблокированный файл, достаточно вызвать на этом файле контекстное меню и выбрать опцию Unlocker.

Затем нужно определиться с командой – переименовать файл, переместить его, просто разблокировать или удалить. В процессе разблокировки Unlocker покажет, какими приложениями файл в данный момент используется.

Lock Hunter также интегрируется с Windows и доступна в контекстном меню системы.

Да и прочий функционал точно такой же – переименование, перемещение, информация о процессах, использующих файл, разблокировка и удаление.

В отличие от Unlocker, программа Lock Hunter не русифицирована, но, учитывая минималистичность функционала, вряд ли использованию программы помешает языковой барьер, тем боле, что интерфейс интуитивно понятен.

Редко, но все же, и программные разблокировщики типа Unlocker или Lock Hunter не справляются с проблемой, обещая удалить заблокированный файл при перезагрузке, но так и не выполняют обещание. Часто с такой ситуацией могут сталкиваться сотрудники корпорации, которые работают в рамках гостевых учетных записей Windows с ограниченными пользовательскими правами.

Удалить заблокированный файл можно попробовать, загрузив Windows в безопасном режиме. Чтобы попасть в этот режим для Windows ХР и 7 во время загрузки (или перезагрузки), нужно жать клавишу F8 и в появившемся меню вариантов загрузки выбрать безопасный режим с загрузкой только основных драйверов и служб.

С Windows 8/8.1 все обстоит несколько сложнее, придется проделать некоторые настройки (обо всех нюансах безопасного режима Windows 8.1 мы уже рассказывали в этой статье с видео). Один из вариантов: в меню «Пуск» или с помощью горячих клавиш «Win+ R» нужно вызвать команду «Выполнить», ввести в ее поле «msconfig» и нажать «Enter».

Во вкладке «Загрузки» нужно отметить галочкой «Безопасный режим» и оставить по умолчанию опцию «Минимальная». Далее – кнопка «Применить».

Во всплывшем окне предупреждения о необходимости перезагрузки системы для вступления в силу изменений нужно нажать кнопку «Перезагрузка».

После перезагрузки система зайдет в безопасный режим. Удалив заблокированный файл, важно не забыть вернуть настройки Windows 8/8.1 во вкладке «Загрузки» в былое состояние, чтобы вновь перезагрузиться уже в обычном режиме работы системы.