-2

Мне нужно переименовать определенную DLL на моем компьютере с Windows 7 (точнее, comctl32.dll), чтобы заменить его другой версией этого файла.

Я старался:

  1. [в разделе: щелчок правой кнопкой мыши, свойства, безопасность, разрешения, расширенный владелец] сменил владельца на текущего пользователя, а [в разделе: щелчок правой кнопкой мыши, безопасность] предоставил все возможные разрешения текущему пользователю. Пробовал [щелкнуть правой кнопкой мыши, переименовать] - не может переименовать его, доступ запрещен.
  2. Запустил админ cmd (повышенные права) и применил силу:

    takeown /f comctl32.dll
    icacls "comctl32.dll" /grant (current user):F
    rename comctl32.dll comctl32.old 
    

    Получено разрешение отказано.

  3. Это разозлило меня, поэтому я запустил оболочку как пользователь системы (выполнив действия, описанные в [1]) и попытался переименовать файл, используя rename comctl32.dll comctl32.old в этой оболочке. В результате снова в разрешении отказано.

Я думал, что системная оболочка дает мне в основном режим бога, так что это очень расстраивает! Кто-нибудь получил какие-либо дальнейшие предложения о том, как переименовать этот файл или что лишает меня доступа? Я в полном недоумении!

[1] http://blogs.technet.com/b/askds/archive/2008/10/22/getting-a-cmd-prompt-as-system-in-windows-vista-and-windows-server-2008 .aspx

//РЕДАКТИРОВАТЬ:
К настоящему времени я также попробовал инструмент Unlocker. Не удалось переименовать файл, но пообещал попытаться сделать это после перезагрузки. Я перезагрузил систему, но мой старый друг до сих пор не изменил имена.

// РЕДАКТИРОВАТЬ 2:
На основе отзывов и комментариев я хотел бы добавить строку предупреждения для моих коллег-пользователей с тем же вопросом. Делайте это только если вы знаете, что и почему вы делаете. В противном случае вы можете потерпеть крах вашей системы.
Я действительно знаю, что я делаю: мне нужно заменить файл, который уже поврежден. Чего я не знаю, как это сделать. Поэтому нет необходимости упоминать здесь об опасностях или преуменьшать вопрос только потому, что это может быть опасно для целостности системы. На самом деле простое использование системы в конце концов угрожает ее целостности - зачем наказывать законный вопрос за то же свойство?

2 ответа2

2

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

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

Чтобы быстрее отключить защиту файлов Windows, вы должны удалить следующий файл:

C:/windows/system32/restore/filelist.xml

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

expand -r filename.dl_ C:/windows/system32

Это создаст имя файла.dll в system32, очевидно, вам придется заменить имя файла именем файла DLL.

Альтернативно, вы можете использовать debug.exe, чтобы отключить защиту файлов Windows, но это более рискованно и занимает около получаса

2

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

Загрузитесь с другой ОС (например, с Linux LiveCD или установочного диска Windows) и переименуйте его оттуда.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .