Substituindo notepad.exe no Windows 7

7

OK, eu realmente quero substituir o notepad.exe padrão no Windows 7 com o Editpad (sim, eu quero substituir o executável real, e não, eu não quero usar algo como Notepad2, então por favor, não sugira isso). Eu usei o seguinte script em lote que funcionou para mim antes:

@echo off
TITLE EditPad Install Script for Complete Windows Vista and 7 Notepad Replacement
echo.
echo EditPad Install Script for Complete Windows Vista and 7 Notepad Replacement
echo Version 2.0
echo.
echo Confirm to apply? (Press Ctrl-C and answer Y to terminate)
pause
echo.
echo.

if exist %SystemRoot%\notepad.original.exe goto exist_editpad_already
if exist %SystemRoot%\System32\notepad.original.exe goto exist_editpad_already
takeown /f %SystemRoot%\notepad.exe
takeown /f %SystemRoot%\System32\notepad.exe
icacls %SystemRoot%\notepad.exe /grant "%USERNAME%":f
icacls %SystemRoot%\System32\notepad.exe /grant "%USERNAME%":f
IF EXIST %SystemRoot%\SysWOW64 (bcdedit.exe -set loadoptions "DDISABLE_INTEGRITY_CHECKS")
copy %SystemRoot%\notepad.exe %SystemRoot%\notepad.original.exe
copy %SystemRoot%\System32\notepad.exe %SystemRoot%\System32\notepad.original.exe
echo.
echo Original notepad.exe has been renamed to "notepad.original.exe" in its original folder.
echo.
echo Overwriting %SystemRoot%\notepad.exe with "%~dp0\EditPad.exe"
copy "%~dp0\EditPad.exe" %SystemRoot%\notepad.exe /y
echo Overwriting %SystemRoot%\System32\notepad.exe with "%~dp0\EditPad.exe"
copy "%~dp0\EditPad.exe" %SystemRoot%\System32\notepad.exe /y
echo.
echo EditPad installation is completed.
echo If no error occurred, EditPad will now replace all Notepad functions.
echo.
pause
goto eof

:exist_editpad_already
echo.
echo INSTALLED EditPad ALREADY! (notepad.original.exe exists in windows or windows system32)
echo.
pause
goto eof

:eof

Este script substituiu notepad.exe pelo executável Editpad, mas agora, se eu tentar abrir um arquivo de texto, recebo o erro "Sua cópia do NOTEPAD.EXE parece ter sido danificada. Tente reinstalá-la do original pacote de configuração. "

Estou usando o Windows 7 de 64 bits. O que eu poderia fazer para forçar o Windows a me deixar usar o Editpad como meu notepad.exe sem me dar essa mensagem de erro estúpida?

UPDATE:
Acho que tenho mais algumas informações que podem ajudar um pouco as coisas. O problema parece estar comigo rodando editpad.exe em todos os dentro do diretório system32. Se eu substituir vários outros arquivos exe por system32\notepad.exe eles são executados corretamente, mas quando tento executar editpad.exe dentro desse diretório, o Windows 7 me fornece uma caixa de diálogo pop-up: "O editor não pôde ser verificado. Tem certeza de que deseja executar este software? " Se eu clicar em Executar, recebo o erro 'arquivo está danificado' - mas SOMENTE se eu estiver rodando dentro do diretório system32. Eu preciso encontrar uma maneira de obter este exe rodando dentro do diretório system32.

    
por Jez 20.02.2012 / 15:48

6 respostas

3

Minha ideia é criar um aplicativo de suporte que possa aproveitar as entradas do Registro de Execução de Arquivo de Imagem para executar o EditPad corretamente.

Observação: você precisará restaurar o seu Bloco de Notas do Windows original primeiro, seja por meio da mensagem de erro que aparece ou desfazendo as alterações feitas. Caso contrário, o Windows pode continuar importunando você com a mensagem de erro, não importa o que você tente.

Dica: O Notepad Replacer sugerido pelo Dracs faz algo semelhante ao que está abaixo automaticamente . Tente isso primeiro, a menos que você tenha motivos para evitá-lo, como o aplicativo sendo código-fonte fechado . Nesse caso, você pode usar o método abaixo:

  1. Crie um arquivo em lotes com o seguinte código. O arquivo de lote poderia ser chamado Replacer.bat por exemplo, e poderia ser colocado em qualquer lugar, como a pasta de instalação do EditPad. (Eu suponho que o EditPad está instalado no caminho dado. Se não, por favor, mude-o.)

    SET NotepadTempVar=%*
    IF DEFINED NotepadTempVar SET NotepadTempVar=%NotepadTempVar:"C:\Windows\System32\notepad.exe"=%
    IF DEFINED NotepadTempVar SET NotepadTempVar=%NotepadTempVar:"C:\Windows\notepad.exe"=%
    IF DEFINED NotepadTempVar (
        FOR /F "tokens=*" %%A IN ("%NotepadTempVar%") DO SET NotepadTempVar=%%A
    )
    IF DEFINED NotepadTempVar (
        START "" "C:\Program Files\EditPad\EditPad.exe" "%NotepadTempVar%"
    ) ELSE (
        START "" "C:\Program Files\EditPad\EditPad.exe"
    )
    
    • CUIDADO! É necessário ter a string vazia "" após o comando START, caso contrário seu sistema pode entrar em um ciclo infinito de criação de novas janelas Prompt de Comando .
    • Talvez seja necessário verificar os caminhos do bloco de notas original na segunda e terceira linhas para refletir seu sistema. Eu encontrei os caminhos para ser o mesmo em ambos os 32 bits e 64 bits do Windows. Os caminhos são insensíveis a maiúsculas e minúsculas , mas tenha cuidado para manter as aspas ao seu redor.
    • No Windows de 64 bits, talvez seja necessário adicionar essa linha extra entre a segunda e a terceira linhas:

      IF DEFINED NotepadTempVar SET NotepadTempVar=%NotepadTempVar:"C:\Windows\SysWOW64\notepad.exe"=%
      


  2. (opcional) Use Lote em lote para Exe Converter para compilar o arquivo em lote para um programa executável. Escolha a opção "Aplicativo invisível".

    • Se você não deseja usar Batch To Exe Converter , você pode usar outra solução, ou você pode usar o arquivo em lotes para as etapas a seguir, em vez do arquivo EXE compilado. No entanto, se você usar o arquivo de lote em si, verá um flash momentâneo de uma janela de comando antes da abertura do EditPad.

  3. Abra o Editor do Registro abrindo o menu Iniciar e pesquisando por regedit (ou usando o comando Executar para executar regedit ).

  4. Navegue para HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

  5. Se uma chave (pasta no painel esquerdo) chamada notepad.exe não existir dentro de Image File Execution Options , clique em Editar > Novo > Digite e digite notepad.exe como o nome da nova chave. Se já existir, navegue até ele.

  6. Se uma entrada chamada Debugger (tipo REG_SZ) não existir na chave notepad.exe (no lado direito), clique em Editar > Novo > Valor da string e digite Debugger como o nome da nova entrada.

  7. Clique duas vezes na entrada chamada Debugger e insira o local completo qualificado e o nome do arquivo EXE gerado pelo Batch To Exe Converter ou o arquivo em lotes se você não usei um compilador. Coloque o local entre aspas.

    • Por exemplo, supondo que você tenha armazenado o arquivo de lote na pasta do programa do EditPad, o valor da entrada do Depurador pode ser "C:\Program Files\EditPad\Replacer.bat" ou "C:\Program Files\EditPad\Replacer.exe" onde Replacer.bat é o arquivo em lote e Replacer.exe é o arquivo EXE compilado obtido na etapa 2, se houver .

  8. Teste a configuração por:

    • Abrindo o Bloco de notas do Windows no menu Iniciar. EditPad deve abrir em seu lugar.
    • Clique duas vezes em um arquivo de texto ou em qualquer arquivo associado ao Windows Notepad.
    • Testar outros meios que você sabe deve normalmente abrir o Bloco de Notas do Windows. Eles provavelmente irão abrir o EditPad.

Se houver algum problema, seus caminhos no arquivo em lote criado na etapa 1 podem não estar corretos. Todas as outras etapas devem ser OK sem nenhum problema se você as seguiu corretamente. Apenas verifique e corrija os caminhos no arquivo de lote (e recompile EXE, se necessário).

    
por 27.02.2012 / 21:58
3

Use a chave de registro Opções de execução de arquivos de imagem .

  • Abra regedit.exe como administrador.
  • Navegue até HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
  • Crie uma nova chave (pasta) chamada notepad.exe
  • Crie um novo valor REG_SZ chamado Debugger e defina seu valor como o caminho para o executável Editpad.exe .

Concluído. Isso não requer modificar ou remover o notepad.exe do sistema, mas não importa como um programa tente executá-lo (apenas tente clicar duas vezes no programa no Explorer), ele executará o EditPad.

Se você estiver no Windows de 64 bits e tentar usar um programa de 32 bits, faça as alterações em HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\ CurrentVersion\Image File Execution Options . (Esta informação foi encontrada na página Notepad2 - Substituir o bloco de notas do Windows .)

    
por 20.02.2012 / 17:23
2

Eu fiz isso no meu computador usando Substituidor de bloco de notas . Na verdade, ele não substitui nenhum arquivo, mas causa qualquer coisa que o bloco de notas teria feito para usar qualquer programa que você escolher. Eu não vi o bloco de notas original desde que o instalei. A desinstalação também reverterá tudo facilmente.

    
por 26.02.2012 / 06:38
1

Eu acho que você também precisa substituir o arquivo notepad.exe em %WINDIR%\winsxs\Backup , mas mesmo isso pode não funcionar corretamente - isso tem a ver com Proteção de recursos do Windows .

    
por 26.02.2012 / 16:57
0

Basta executar o arquivo em lote no modo de administrador.

  1. Clique com o botão direito no arquivo de lote
  2. Selecione "Executar como administrador"
  3. Prosseguir com a instalação

Se você já executou este script antes do que provavelmente ele não funcionará imediatamente e você precisará excluir o notepad.original.exe de% SystemRoot% e% SystemRoot% \ System32:

rm %SystemRoot%\notepad.original.exe
rm %SystemRoot%\System32\notepad.original.exe

Lembre-se de que você também precisa executá-lo no modo de administrador, portanto, copie as linhas acima em um arquivo e prossiga com as mesmas instruções do arquivo de lote original acima.

    
por 20.02.2012 / 16:38
0

Você escreveu:

This script did replace notepad.exe with the Editpad executable, but now if I try and open a text file, I get the error "Your copy of NOTEPAD.EXE appears to have been damaged. Please try reinstalling it from the original setup package."

notepad.exe é um arquivo protegido do Windows por isso é um pouco complicado substituí-lo ...

Aqui está uma solução manual no site HowTo Geek : Como substituir o bloco de notas no Windows 7

link

Outra opção pode ser usar o utilitário de linha de comando Sysinternals PsExec no seu batchfile com as seguintes opções

...PsExec.exe" -i -d -s...

PsExec: link

Espero que esta ajuda. Deixe-nos saber.

    
por 27.02.2012 / 15:48