User32.dll ou Kernel32.dll Falha ao inicializar

Traduções deste artigo Traduções deste artigo
ID do artigo: 184802 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Às vezes, um aplicativo é executado por ou CreateProcess() CreateProcessAsUser() falhar e você receber uma das seguintes mensagens de erro:
Inicialização da biblioteca dinâmica \system32\user32.dll <system> Falha. O processo está sendo encerrado anormalmente.
Inicialização da biblioteca dinâmica <system> \system32\kernel32.dll falha. O processo está sendo encerrado anormalmente.
O processo falha retorna o código de saída 128 ou
ERROR_WAIT_NO_CHILDREN

Causa

A falha é causada por um destes procedimentos:
  1. O processo executado não tem acesso a segurança adequada para a estação de janela e a área de trabalho associado com o processo.
  2. O sistema ficou sem heap da área de trabalho.

Mais Informações

Causa 1

O processo executado não tem acesso a segurança adequada para a estação de janela e a área de trabalho associado com o processo.

Membro da estrutura STARTUPINFO passado para CreateProcess() ou CreateProcessAsUser() lpDesktop Especifica qual estação de janela e área de trabalho está associada ao processo executado. O processo executado deve ter acesso a segurança adequada para a estação de janela especificada e a área de trabalho.

Para obter mais informações sobre como resolver problemas de segurança com estações de janela e áreas de trabalho, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
165194CreateProcessAsUser() windowstations e áreas de trabalho

Causa 2

O sistema ficou sem heap da área de trabalho.

Cada objeto da área de trabalho no sistema tem um heap da área de trabalho associado a ele. O objeto da área de trabalho usa a heap para armazenar menus, ganchos, seqüências de caracteres e janelas. O sistema aloca heap da área de trabalho de um buffer de 48 MB de todo o sistema. Além da área de trabalho pilhas, drivers de fonte de impressora e também usam esse buffer.

Áreas de trabalho estão associadas com estações de janela. Uma estação de janela pode conter zero ou mais áreas de trabalho. O tamanho da pilha da área de trabalho alocado para uma área de trabalho associada com uma estação de janela pode ser alterado no seguinte valor do Registro.

Observação A Microsoft não recomenda para usar a opção/3 GB. A opção/3 GB é especificada no arquivo boot.ini.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows
Os dados padrão para esse valor do Registro aparecerão algo como o seguinte (tudo em uma linha):
   %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows
   SharedSection=1024,3072,512 Windows=On SubSystemType=Windows
   ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3
   ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off
   MaxRequestThreads=16
				
os valores numéricos após "SharedSection =" controle da área de trabalho como pilha é alocada. Esses valores SharedSection são especificados em quilobytes. Há configurações separadas para áreas de trabalho associadas com estações de janela interativa e não-interativos.

Observação Se valores do Registro SharedSection forem modificados, o sistema deve ser reiniciado para que as alterações tenham efeito.

importante Esta seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, sérios problemas poderão ocorrer se você modificar o registro incorretamente. Por isso, certifique-se que você execute essas etapas cuidadosamente. Para proteção adicional, fazer backup do registro antes de modificá-lo. Em seguida, você pode restaurar o registro se ocorrer um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
322756Como fazer backup e restaurar o registro no Windows


O primeiro valor SharedSection (1024) é o tamanho de heap compartilhados comuns a todas as áreas de trabalho. Isso inclui a tabela de identificador global, que contém identificadores para janelas, menus, ícones, cursores e assim por diante e configurações de sistema compartilhado. É improvável que você nunca precisará alterar esse valor.

O segundo valor SharedSection (3072) é o tamanho do heap da área de trabalho para cada área de trabalho está associada com a estação de janela "interativa" WinSta0 . Objetos de usuário como ganchos, menus, seqüências de caracteres, e windows consumam memória esse heap da área de trabalho. É improvável que você nunca precisará alterar esse valor SharedSection segundo.

Cada área de trabalho é criada na estação de janela interativa usa heap da área de trabalho padrão 3072 KB. Por padrão, há três áreas de trabalho criadas no Winsta0 pelo sistema:
  • Winlogon
  • padrão - A área de trabalho do aplicativo será usada por todos os processos para a qual "Winsta0\default" é especificado no membro de estrutura STARTUPINFO.lpDesktop "padrão". Quando o membro da estrutura lpDesktop for NULL , a estação de janela e a área de trabalho é herdada do processo pai. Todos os serviços que são executados sob a conta do sistema local com a opção de inicialização Permitir o serviço interaja com a área de trabalho selecionada serão usado "Winsta0\Default". Todos esses processos irão compartilhar o mesmo heap da área de trabalho associado com a área de trabalho "Padrão" aplicativo.
  • proteção de tela - área de trabalho a proteção de tela é criado na estação de janela interativa (WinSta0) quando uma proteção de tela é exibida.
O terceiro valor SharedSection (512) é o tamanho do heap da área de trabalho para cada área de trabalho está associada a uma estação de janela "não-interativo". Se esse valor não estiver presente, o tamanho do heap da área de trabalho para estações de janela não-interativos será mesmo que o tamanho especificado para estações de janela interativa (o segundo valor SharedSection).

Se apenas dois valores SharedSection estiverem presentes, você pode adicionar ", 512" como o terceiro valor para especificar o tamanho do heap da área de trabalho para áreas de trabalho criado em estações de janela não-interativos.

Cada processo do serviço executado sob uma conta de usuário receberá uma nova área de trabalho em uma estação de janela não-interativos criada pelo Gerenciador de controle de serviço (SCM). Portanto, cada serviço executado sob uma conta de usuário consumirá o número de kilobytes de heap da área de trabalho especificado no terceiro valor SharedSection. Todos os serviços executados na conta LocalSystem com Permitir o serviço interaja com a área de trabalho não compartilhamento selecionado o heap da área de trabalho da área de trabalho "Padrão" na estação de janelas de serviço não-interativos (Service-0 x 0-3e7 $).

O heap da área de trabalho total sendo usado em estações de janela interativa e não-interativos deve caber no buffer de todo o sistema 48 MB.

Valores de SharedSection segundo ou terceiro decrescentes irão aumentar o número de áreas de trabalho que podem ser criados nas estações de janela correspondente. Valores menores limitará o número de conexões, menus, seqüências de caracteres e janelas que podem ser criadas dentro de uma área de trabalho. Por outro lado, o aumento dos valores de SharedSection segundo ou terceiro diminuirá o número de áreas de trabalho que podem ser criados, mas aumentará o número de conexões, menus, seqüências de caracteres e janelas que podem ser criadas dentro de uma área de trabalho.

Como o SCM cria uma nova área de trabalho na estação de janela não-interativos para cada processo de serviço que está executando sob uma conta de usuário, um valor maior da área de trabalho para o terceiro valor SharedSection reduzirá o número de serviços de conta de usuário que podem executar com êxito no sistema. O valor mínimo que pode ser especificado para o valor de SharedSection segundo ou terceiro é 128. Qualquer tentativa de usar um valor menor padrão será a 128.

Heap da área de trabalho está alocado pelo User32.dll quando um processo está precisam de objetos de usuário. Se um aplicativo não for dependente de User32.dll, ele não consumirão heap da área de trabalho.

Observação No Windows Server 2003, o evento específico é registrado no log de eventos do sistema quando uma das seguintes condições for verdadeira:
  • Se o heap da área de trabalho ficar cheio, o seguinte evento é registrado:

    Tipo de evento: aviso
    Origem do evento: Win32k
    Categoria do evento: nenhum
    IDENTIFICAÇÃO de evento: 243
    Data: Date
    Tempo: Time
    Usuário: N/d
    Computador: ServerName
    Descrição: Falha de uma alocação de heap da área de trabalho.

    Nesse caso, aumente o tamanho heap da área de trabalho.
  • Se o heap da área de trabalho total se torna o tamanho do buffer de todo o sistema, o seguinte evento é registrado:

    Tipo de evento: aviso
    Origem do evento: Win32k
    Categoria do evento: nenhum
    IDENTIFICAÇÃO de evento: 244
    Data: Date
    Tempo: Time
    Usuário: N/d
    Computador: ServerName
    Descrição: Falha ao criar uma área de trabalho devido à exaustão da heap da área de trabalho.

    Nesse caso, diminua o tamanho heap da área de trabalho.
No Windows Server 2003, um buffer de todo o sistema é 20 MB quando uma das seguintes condições for verdadeira:
  • Você está em um ambiente de serviços de terminal.
  • A opção/3 GB é especificada no arquivo Boot.ini.

Propriedades

ID do artigo: 184802 - Última revisão: terça-feira, 26 de fevereiro de 2008 - Revisão: 11.3
A informação contida neste artigo aplica-se a:
  • Interface de Programação de Aplicativos do Microsoft Win32 nas seguintes plataformas
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • Microsoft Windows XP Professional
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
Palavras-chave: 
kbmt kbdll kbkernbase kbprb kbsecurity KB184802 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 184802

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com