Inicie um script em lote como shell em vez de explorer no Windows 10

Inicie um script em lote como shell em vez de explorer no Windows 10

No Windows 10, o shell padrão é explorer.exe, fornecendo a barra de tarefas, os ícones da área de trabalho e o menu Iniciar.

Desde o Windows 10 v1909, e possivelmente v1903, a Microsoft decidiu usar a hiperchave ( CTRL- ALT- SHIFT- WIN) mais algumas chaves, a chave padrão para aplicativos do Office, sem permitir que usuários que não possuem o Office instalado, usem essas chaves para seu próprio lazer. .

Eu tinha essas chaves vinculadas a ações em vários programas, mas agora cada uma dessas chaves abre uma página no meu navegador navegando para o office365, que não uso, ou, no caso do O para OneDrive, me dando uma mensagem de erro porque não tenho o OneDrive instalado.

Deveria haver a capacidade de não abrir nada quando você pressiona o botão, usando um ajuste de registro, mas no Windows 10 v1909, isso não funciona mais.

Preciso me livrar desse comportamento, então fiz algumas pesquisas:

Parece que a Microsoft incorporou esse suporte diretamente no explorer.exe; Posso matar explorer.exee as teclas de atalho finalmente desaparecem, mas quando começo explorer.exe, elas voltam.

Parece que na inicialização do explorer.exe, essas chaves são registradas uma vez e, se o registro das chaves falhar, o Explorer não tentará novamente. Basicamente, isso significa que, para recuperar minhas teclas de atalho, preciso encerrar o Explorer, reiniciar os aplicativos que usam essas teclas de atalho e iniciar o Explorer. É ainda possível matar o explorer, iniciar um aplicativo que registre todas as teclas de atalho do escritório, iniciar o Explorer, cancelar o registro das teclas de atalho do escritório e elas ficam totalmente gratuitas a partir desse momento.

Dado que para mim só tenho um programa que usa todas essas teclas de atalho globais, tudo o que preciso fazer é iniciar este programa antes de iniciar o Explorer e ficarei bem.

É claro que eu poderia executar um script que mata o Explorer, inicia meu programa e, em seguida, inicia o Explorer, mas como isso será executado na inicialização do sistema de qualquer maneira, o flash do Explorer como resultado pode ser evitado se eu puder iniciar meu script de inicialização em vez do Explorer, algo que pode ser feito definindo um shell alternativo. Até onde sei, entretanto, apenas .exearquivos podem ser definidos como shell.

Alguém sabe como posso definir um .cmdarquivo (ou outra linguagem de script) como shell ou, alternativamente, alguém conhece uma maneira limpa de resolver meu problema global de teclas de atalho?

EDITAR: estou no Windows 10 Pro.

Na verdade, tentei fazer um programa VB .net que seria iniciado explorer.exedepois de registrar as teclas de atalho, mas não consegui fazê-lo funcionar de maneira confiável. Se explorer.exenão for shell, e eu iniciar o explorer.exe, enquanto ele não é executado, só obtenho um navegador de arquivos, não a barra de tarefas, etc. Se o Explorer for o shell e ele iniciar, matá-lo pelo meu programa aborta a sequência de inicialização , então tenho que atrasar significativamente minha rotina, o que significa que em algum momento recebo uma reinicialização perceptível do Explorer, o que está longe do ideal.

Eu brinquei com a ideia de criar meu próprio shell como um substituto para a barra de tarefas e a área de trabalho, mas como uso o Actual Tools Window Manager e ele depende do Explorer como shell, isso também não é o ideal. Portanto, por esse motivo, esta questão ainda está em aberto, embora eu tema que o que estou perguntando simplesmente não seja possível.

Responder1

Filtro de teclado (referência do provedor WMI)

Compatível apenas com Windows 10 Enterprise e Windows 10 Education

WEKF_PredefinedKey
Esta classe bloqueia ou desbloqueia combinações de teclas predefinidas, como Ctrl+ Alt+Delete

class WEKF_PredefinedKey {
 [Static] uint32 Enable (
   [In] string PredefinedKey<
 );

 [Static] uint32 Disable (
   [In] string PredefinedKey
 );

 [Key] string Id;
 [Read, Write] boolean Enabled;
};

Fonte: Documentos Microsoft

Responder2

Não testei essa ideia, mas parece plausível e direta: em vez de substituir o Explorer, crie um .regarquivo que exclua ou modifique as entradas ofensivas criadas pelo Explorer no Registro. Em seguida, crie uma tarefa no Agendador de Tarefas do Windows que executará o .regarquivo e será acionada sempre que você fizer logon no Windows.

Para mais informações, veja:
Como adicionar, modificar ou excluir subchaves e valores de registro usando um arquivo .reg

Responder3

Está resolvido aqui: https://github.com/stringlapse/OfficeKeyFix

Você deve carregar o visual studio com extensão para tarefas normais do C++. Crie um projeto vazio, construa-o e vá para a execução automática.

É melhor criar tarefas no planejador de tarefas com atraso de 30 ou 60 segundos.

informação relacionada