Artigo: 254957 - Última revisão: terça-feira, 21 de Novembro de 2006 - Revisão: 3.1

Erro: O código de actualização do registo poderá falhar quando um utilizador sem privilégios executa um servidor OLE do MFC no Windows 2000

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
importante : Este artigo contém informações sobre como modificar o registo. Antes de modificar o registo, certifique-se de que efectua uma cópia de segurança e de que compreende como o restaurar o registo se ocorrer um problema. Para obter informações sobre como efectuar uma cópia de segurança, restaurar e editar o registo, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
256986  (http://support.microsoft.com/kb/256986/EN-US/ ) Descrição do registo do Microsoft Windows

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Quando um utilizador sem privilégios (por exemplo, um utilizador que não seja administrador ou uma potência não) é executado num servidor Microsoft Foundation Classes (MFC) OLE padrão no Windows 2000, a actualização de registo falha e apresenta a seguinte mensagem de erro:
"Falha ao actualizar o registo do sistema. Tente utilizar o REGEDIT."

Causa

Este erro ocorre porque sempre que é executado um OLE do MFC executável servidor, chama a função UpdateRegistry na classe COleTemplateServer . A função MFC UpdateRegistry actualiza as entradas de registo em HKEY_CLASSES_ROOT para a aplicação e respectivos tipos de documento. Esta actualização cria os movimentos ou quando o programa é executado pela primeira vez ou actualiza os movimentos para reparar os danos que possam ter ocorrido. No Windows 2000, o acesso a HKEY_CLASSES_ROOT está limitado a administradores e utilizadores avançados.

Resolução

aviso : a utilização incorrecta do Editor de registo poderá provocar problemas graves que poderão forçar a reinstalação do sistema operativo. Microsoft não garante que os problemas resultantes da utilização incorrecta do Editor de registo possam ser resolvidos. As suas próprias risco da utilização do Editor de registo.


Para resolver o erro e permitir que o servidor registar quando é executado por um utilizador com privilégios, testar as permissões do registo ao abrir uma chave, tal como demonstrado no seguinte código:
HKEY hTestKey = NULL;
LONG lResult = ::RegCreateKeyEx(HKEY_CLASSES_ROOT, 
                          "MFCOServ.Document", 0, "", 
                          REG_OPTION_NON_VOLATILE, 
                          KEY_ALL_ACCESS, NULL, 
                          &hTestKey, NULL);
if ((ERROR_SUCCESS == lResult) && (hTestKey != NULL))
{
   // It's ok to call UpdateRegistry
}
				
Note que o segundo parâmetro para RegCreateKeyEx é o tipo de documento no registo. Vai ser específico de projecto.

Ponto Da Situação

A Microsoft confirmou que este erro ocorre nos produtos da Microsoft listados no início deste artigo.

Mais Informação

O Windows 2000 por predefinição é um ambiente seguro do Windows. Neste ambiente, os utilizadores sem privilégios podem escrever as seguintes três localizações específicas:
  1. Para os seus próprios parte do registo, designado como HKEY_CURRENT_USER , com duas excepções a seguir:
    Software\Policies
    					
    e
    \Software\Microsoft\Windows\CurrentVersion\Policies
    					
  2. Para os seus próprios directório de perfil de utilizador ( CSIDL_PROFILE ).
  3. Uma localização de documentos partilhados ( CSIDL_COMMON_DOCUMENTS ).
As aplicações têm de ser instaladas por administradores e utilizadores avançados. Um OLE do MFC servidor, que foi anteriormente registado por um utilizador com privilégios, continua em execução com êxito depois do erro é resolvido.

Passos para reproduzir o comportamento

  1. Utilize AppWizard MFC para gerar uma aplicação executável MFC.
  2. Na página 1 de AppWizard MFC, seleccione o tipo de aplicação único documento ou multi-document.
  3. Na página 3 de AppWizard MFC, seleccione o "servidor completo" ou "contentor e servidor" como o tipo de suporte para documentos compostos que pretende incluir.
  4. Aceite as predefinições nas páginas restantes AppWizard MFC.
  5. Compilar a aplicação.
  6. Em início de sessão de um utilizador sem privilégios, execute a aplicação e é apresentado o erro. Se a aplicação já foi registada no computador, em seguida, o erro é resolvido e o programa continua a executar. Se a aplicação nunca foi registada no computador de destino, falhar.

Referências

Especificações de aplicação para o Microsoft Windows 2000 para aplicações (Specifications\Platforms).
Especificações de aplicação para o Microsoft Windows 2000 para aplicações distribuídas (Specifications\Platforms).
Microsoft Windows 2000 compatibilidade de aplicações (técnico Articles\Windows Platform\Windows 2000).
Política de grupo (Backgrounders\Windows Platform\Windows 2000) do Microsoft Windows 2000

A informação contida neste artigo aplica-se a:
  • Microsoft Foundation Class Library 4.2 nas seguintes plataformas
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5
Palavras-chave: 
kbmt kbtshoot kbbug kbdocview kboleapp kbpending KB254957 KbMtpt
Tradução automáticaTraduçã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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 254957  (http://support.microsoft.com/kb/254957/en-us/ )
Retired KB ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.