Como corrigir o erro de inicialização do framework oobe.exe .Net?

2

Ao fazer login no meu Windows Server 2008 R2, recebo um erro

oobe.exe - .NET framework Initialization Error.

Unable to find a version of the runtime to run this application.

Qual é a causa desse erro e como corrigi-lo?

EDITAR:

Acho que esse erro surgiu depois que alterei a sinalização COMPLUS_ENABLE_64bit . Pode ter algo para fazer isso?

    
por jrara 14.03.2013 / 12:57

1 resposta

1

O executável pode ser compilado com sinalizadores indicando que ele pode ser executado apenas em um determinado "bitness". Você pode alterar esses sinalizadores usando o utilitário coreflags.exe que está disponível em todos os SDKs do .Net.

O sdk para .net 2.0 pode ser encontrado aqui .

Existem 3 modos principais para configurar uma DLL ou um executável:

  • AnyCPU (vai jit para o que estiver disponível, preferindo 64 bits): / 32BIT + / ILONLY +
  • x86: (desativa a compilação de 64 bits) / 32BIT + / ILONLY -
  • x64: (desativa a compilação de 32 bits) / 32BIT- / ILONLY -

Geralmente AnyCPU é a melhor escolha, a menos que você esteja fazendo interoperabilidade COM ou de outra maneira chamando código nativo, caso em que o bitness deve ser o mesmo que o código nativo foi compilado.

Provavelmente você não deve tentar alterar o bitness de uma DLL de terceiros, já que se não for o padrão "AnyCPU", provavelmente há uma boa razão (geralmente DLLs de satélites nativos que podem fazer qualquer coisa, por exemplo gerar arquivos PDF ou usar outras bibliotecas nativas de terceiros).

Editar: Seguir o conselho da IBM para desabilitar o tempo de execução de 64 bits é um grande exagero, você pode fazer o mesmo apenas para este aplicativo usando o utilitário coreflags enquanto deixa o resto da estrutura e todos os aplicativos dependentes intactos. Reverta a alteração executando:

C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Ldr64.exe Set64
    
por 20.03.2013 / 01:41