Как я могу удалить или отключить Windows system32 / find.exe?

3168
th3falc0n

Я пытаюсь сделать мою систему Windows максимально совместимой с существующими файлами Makefile. Один большой шаг, который отсутствует, - это замена окна «find» (которое совпадает с grep) на GNU find (список всех файлов в каталоге и подкаталогах). Это возможно? (У меня уже есть msys find установленный и готовый к работе. Простое удаление system32 / find.exe, вероятно, будет работать, но, к сожалению, это не так просто)

7
Я переименовываю мои утилиты gnu find.exe в ufind.exe и использую ufind user619818 9 лет назад 0
Проблема в том, что это решение приведет к созданию разных Make-файлов на разных платформах (если я не хочу создавать ссылку ufind на моих компьютерах с Linux) th3falc0n 9 лет назад 0
Не делай этого. Это _will_ сломать вещи. Вместо этого используйте среду GNU, например [Cygwin] (http://cygwin.com/) или [MinGW] (http://www.mingw.org/). Daniel B 9 лет назад 10
Хорошо, если я использую оболочку, поставляемую с msys в MinGW (которую я использую), она все еще зависит от переменной Windows PATH, которая определяет system32 и SysWOW64 в качестве путей поиска и, таким образом, переопределяет поиск msys. th3falc0n 9 лет назад 0
Что-то пошло не так при установке тогда. Каталоги% PATH% - это поиск спереди назад, и используется первое совпадение. Пока MinGW имеет свои каталоги дальше вперед, все в порядке. Daniel B 9 лет назад 0
Если вы используете `bash.exe` или` sh.exe`, тогда использование `find` вызовет GNU find вместо Win32 find. `sh.exe` и` bash.exe` поставляются с `git` или MinGW. Rapptz 9 лет назад 1
Это будет сделано только в том случае, если он запущен с соответствующим сценарием, предоставленным с msys в MinGW, потому что по умолчанию двоичные файлы msys не добавляются в глобальную переменную Path MinGW th3falc0n 9 лет назад 0

2 ответа на вопрос

16
salehigal

Rather than removing Windows' find.exe, I strongly recommend putting GNU in your path before Windows\System32. For example, with Cygwin, you can use something like:

path c:\cygwin\bin;c:\windows\system32;c:\windows;c:\program files\foo;c:\program files\bar;c:\windows\system32\wbem

Конечно, нет необходимости делать это вручную - просто так все работает. Из MSYS `/ etc / profile`:` export PATH = ".: / Usr / local / bin: / bin: / mingw / bin: $ PATH" ` Daniel B 9 лет назад 0
Если вы идете по этому пути, лучше ограничить область видимости максимально. Не меняйте `PATH` для всей системы; изменяйте его только для используемого вами приложения (например, используйте специальный пакетный файл для запуска приглашения с `set PATH = \ path \ to \ cygwin;% PATH%`). Это ограничивает потенциальные сюрпризы позже, когда вы или кто-то другой ожидает утилиту Windows и вместо этого получает * nix. Bob 9 лет назад 1
1
th3falc0n

You can gain access to all protected files by changing the ownership.

For Windows 7, on the file or folder that you want to edit:

  • Go to Properties->Security->Advanced->Owner
  • Change owner to either Administrators or your own User
  • On Properties->Security grant rights to the new owner

Source: Windows 7 – How to Delete Files Protected by TrustedInstaller

Пожалуйста, включите необходимые шаги в вашем ответе. Если ссылка исчезнет в какой-то момент, ваш ответ станет намного менее полезным. gronostaj 9 лет назад 2
И тогда любое обновление Windows (будь то исправление ошибки, исправление безопасности, пакет обновления или другое) может заменить find.exe на «правильную» версию снова. Это «глобальное» решение «локальной» проблемы, и они всегда являются плохой идеей. Rob 9 лет назад 0
Вы догадываетесь, почему я пометил ответ Salehigal как правильный ?, Мое - это решение проблемы, о которой я просил, решение Salehigal - это проблема, которая у меня действительно была. th3falc0n 9 лет назад 2