[Dúvida]Registry in Win.Vista

Started by l u b c k e, 27 de April , 2008, 01:07:57 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

l u b c k e

Boa tarde a todos, estou tentando implementar um código que manipula o registro usando o VisualStudio, o problema é que sempre usei o Borland para isso e agora não tenho esta possibilidade.

#include <vcl.h>
#include <vcl\registry.hpp>

void  MostraNomesCom(void)
{
    TRegistry *Registro = new TRegistry;
    TStringList *Lista = new TStringList;

    Registro->RootKey = HKEY_LOCAL_MACHINE; //Define chave raiz.
    Registro->OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM", false);
    Registro->GetValueNames(Lista);
    for(int indice=0; indice <= Lista->Count-1; indice++)
       Form1->ComboBoxPorta->Items->Add(Registro->ReadString( Lista->Strings[indice] ));

     if (Form1->ComboBoxPorta->Items->Count > 0)
        Form1->ComboBoxPorta->ItemIndex = 0; //Exibir o primeino nome da porta.
    Lista->Free();
    Registro->CloseKey();
    Registro->Free();
}

Este é o código que eu preciso implementar em VS 2008, alguém pode me ajudar ?

Eu ja tenho mais ou menos noção de como fazer, mas estou me complicando na forma de usar o HKEY, que pelo MSDN Library é o indicado para manipular registro.


Agradeço a ajuda.

Contato]

l u b c k e

Vamos lá senhores, quem quer ser hacker de verdade tem que saber programar e mecher com registros. Mesmo aqueles que não sabe a resposta, ajudem a pesquisar e tenho certeza que aprenderão algo.

Contato]

l u b c k e

Seguinte pessoal, consegui utilizar o Borland no desenvolvimento deste projeto, estou um pouco mais aliviado, mas problemas com acesso ao registro do Vista ainda persistem e lhes apresento a solução:

Quote from: "Micorsoft"A história do desenvolvedor do Windows Vista: Requisitos de desenvolvimento de aplicativos para controle de conta de usuário no Windows Vista
Microsoft Corporation
Publicado em: 10 de novembro de 2006

A História do desenvolvedor do Windows Vista (em inglês) inclui conteúdo para desenvolvedores, bem como outros especialistas em tecnologia e gerentes da área, interessados em uma exploração profunda dos recursos novos e aprimorados do Windows Vista. Ela foi lançada no Windows Vista Developer Center na forma de breves artigos, publicados a cada duas semanas, aproximadamente. Esses artigos são apenas um resumo do arquivo de Ajuda do Windows, cujo download pode ser feito por aqui.

Observação: Este tópico é uma documentação de pré-lançamento e está sujeito a alterações em lançamentos futuros.

Observação: Para fazer comentários sobre os artigos, envie um email para mailto:Vistadev@microsoft.com">Vistadev@microsoft.com.

Conteúdo

Este artigo contém informações para auxiliar desenvolvedores a se assegurarem de que seus aplicativos sejam compatíveis com o UAC (Controle de Conta de Usuário). As seções deste artigo compreendem:

Observação   Todo o conteúdo deste artigo pode ser encontrado no arquivo de Ajuda do Windows, cujo download pode ser feito por aqui. Para encontrar este tópico no arquivo de ajuda, expanda Fundamentals, expanda Secure Applications, expanda Developing Secure Applications e, em seguida, clique em User Account Control (UAC).

Por que Controle de Conta de Usuário? — Motivos pelos quais o UAC foi desenvolvido.

Os desenvolvedores de aplicativos vêm consistentemente criando aplicativos para Microsoft Windows que exigem direitos de usuário e privilégios excessivos do Windows, exigindo com freqüência que o usuário que o está executando seja um administrador. Por conseqüência, poucos usuários do Windows o executam com direitos de usuário e privilégios do Windows mínimos necessários. Muitas empresas, buscando equilibrar a facilidade de implantação e a facilidade de uso com segurança, têm recorrido, muitas vezes, a implantar seus computadores como administrador, devido a problemas de compatibilidade com aplicativos de usuário padrão.

A lista a seguir descreve ainda outros motivos pelos quais é difícil executar como usuário padrão em computadores pré-Microsoft Windows Vista:

1.
   

Muitos aplicativos Windows exigem que o usuário registrado seja um administrador, mas, na realidade, não requerem acesso de nível de administrador. Esses aplicativos realizam uma variedade de verificações de acesso de administrador antes de permitirem a execução, dentre as quais:
•   

Verificação de token de acesso de administrador.
•   

Solicitações de "Acesso total" em locais protegidos do sistema.
•   

Gravação de dados em locais protegidos, como %ProgramFiles%, %WinDir% e HKLM\Software.

2.
   

Muitos aplicativos Windows não foram criados com o conceito de privilégios mínimos e não separam funcionalidade de usuário e de administrador em dois processos distintos.

3.
   

O Windows 2000 e o Windows XP criam toda nova conta de usuário como administrador, por padrão; portanto, componentes essenciais do Windows, como os painéis de controle Data e Hora e Gerenciamento de Energia, não funcionam muito bem para um usuário padrão.

4.
   

Os administradores de Windows 2000 e Windows XP devem criar duas contas de usuário distintas — uma para tarefas administrativas e uma conta de usuário padrão para realizar tarefas do dia a dia. Logo, os usuários devem fazer logoff de suas contas de usuário padrão e fazer logon novamente como administrador ou usar Executar Como para realizar qualquer tarefa administrativa.

Com o UAC, a Microsoft está oferecendo uma tecnologia para simplificar a implantação de computadores de usuário padrão, para empresas e domicílios.

Trabalhando fora da arquitetura de segurança do Windows, conforme originalmente projetada no sistema operacional Microsoft Windows NT 3.1, a equipe do UAC buscou implementar um modelo de usuário padrão que fosse flexível e mais seguro. Nas versões anteriores do Windows, um token de acesso era criado para um administrador durante o processo de logon. O token de acesso do administrador contém a maioria dos privilégios do Windows e a maioria dos SIDs (identificadores de segurança) administrativos. Esse token de acesso garante que um administrador possa instalar aplicativos, configurar o sistema operacional e acessar qualquer recurso.

A equipe do UAC fez uma abordagem drasticamente diferente do processo de criação de token de acesso no Windows Vista. Quando um usuário administrador faz logon em um computador com Windows Vista, são criados dois tokens de acesso: um token de acesso de usuário padrão filtrado e um token de acesso de administrador total. Em vez de inicializar a área de trabalho (Explorer.exe) com o token de acesso de administrador, é usado o token de acesso de usuário padrão. Todos os processos filho herdam dessa primeira inicialização da área de trabalho (o processo explorer.exe), o que ajuda a limitar a superfície de ataques do Windows. Por padrão, todos os usuários, inclusive os administradores, fazem logon em um computador com Windows Vista como usuários padrão.

Observação   Há uma exceção à afirmação acima: convidados fazem logon no computador com menos direitos e privilégios de usuário do que os usuários padrão.

Quando um administrador tenta executar uma tarefa administrativa, como instalar um aplicativo, o UAC solicita que o usuário aprove a ação. Com a ação aprovada pelo usuário, a tarefa é inicializada com o token de acesso de administrador total. Este é o comportamento padrão de solicitação ao administrador, sendo configurável no snap-in Gerenciador de Diretivas de Segurança (secpol.msc) e com Diretiva de Grupo (gpedit.msc).

Observação   Uma conta de administrador em um computador com Windows Vista com o UAC ativado também é chamada de conta de administrador em Modo de Aprovação de Administrador. O Modo de Aprovação de Administrador identifica a experiência de usuário padrão para administradores.

Cada elevação administrativa também é específica ao processo, o que impede outros processos de usar o token de acesso sem a solicitação de aprovação do usuário. Por conseqüência, usuários administradores têm controle mais granular sobre quais aplicativos instalar, ao mesmo tempo em que se combatem software mal-intencionado, que esperam que o usuário registrado esteja executando com um token de acesso de administrador total.

Usuários padrão também têm a oportunidade de elevação em fluxo e execução de tarefas administrativas, usando a infra-estrutura do UAC. Quando um usuário padrão tenta executar uma tarefa administrativa, o UAC solicita que o usuário insira credenciais válidas para uma conta de administrador. Este é o comportamento padrão de solicitação ao usuário padrão, sendo configurável no snap-in Gerenciador de Diretivas de Segurança (secpol.msc) e com Diretiva de Grupo (gpedit.msc).

Atualizações do Windows Vista

As atualizações a seguir refletem as alterações básicas cumulativas em funcionalidade que ocorreram no Windows Vista.
•   

O UAC está habilitado por padrão
•   

Todas as contas de usuário subseqüentes são criadas como usuários padrão
•   

Solicitações de elevação são exibidas na área de trabalho segura, por padrão
•   

As solicitações de elevação para aplicativos em segundo plano são minimizadas na barra de tarefas
•   

As elevações são bloqueadas no caminho de logon do usuário
•   

A conta interna administrador encontra-se desativada por padrão em novas instalações
•   

Controle de conta de usuário e cenários remotos
•   

Novas configurações de ACL (lista de controle de acesso) padrão

Como o UAC funciona — Detalhes da funcionalidade do UAC.

Esta seção descreve os componentes arquiteturais e funcionais do UAC para desenvolvedores de aplicativos e contém os tópicos Novas Tecnologias do Windows Vista e Arquitetura do UAC.

Novas Tecnologias do Windows Vista

As seções a seguir detalham as novas tecnologias do Windows Vista.
•   

Detecção do instalador
•   

Correções para usuários padrão com o Windows Installer 4.0
•   

Isolamento de privilégio de interface de usuário
•   

Virtualização

Informações detalhadas sobre as novas tecnologias do Windows Vista e alterações em tokens de acesso podem ser encontradas na seção Nova Tecnologia do arquivo de Ajuda do Windows, cujo download pode ser feito por aqui.

Arquitetura do UAC

O diagrama abaixo representa o fluxo de processos de inicializações executáveis no Windows Vista.

Arquitetura do UAC



A seguir, encontra-se uma descrição do fluxo de processos exibido no diagrama da arquitetura do UAC e como o UAC é implementado quando um executável tenta a inicialização.

Caminho de inicialização de usuário padrão

O caminho de inicialização de usuário padrão no Windows Vista é similar ao do Windows XP, mas apresenta algumas modificações.

1.
   

ShellExecute() chama CreateProcess().

2.
   

CreateProcess() chama AppCompat, Fusion e Detecção do Instalador para avaliar se o aplicativo requer elevação. Então, o executável é inspecionado para a determinação de seu requestedExecutionLevel, que é armazenado no manifesto de aplicativo do executável. O banco de dados AppCompat armazena as informações de entradas de ajuste de compatibilidade do aplicativo. A Detecção do Instalador detecta os executáveis de instalação.

3.
   

CreateProcess() retorna um código de erro do Win32, declarando ERROR_ELEVATION_REQUIRED.

4.
   

ShellExecute() aguarda, especificamente, esse novo erro e, ao recebê-lo, chama o AIS (Serviço de Informações de Aplicativos) para tentar a inicialização elevada.

Caminho da inicialização elevada

O caminho da inicialização elevada do Windows Vista é um novo caminho de inicialização do Windows.

1.
   

O AIS recebe a chamada do ShellExecute() e reavalia o nível de execução solicitado e a Diretiva de Grupo para determinar se a elevação é permitida e definir a experiência de usuário da elevação.

2.
   

Se o nível de execução solicitado exigir elevação, o serviço emitirá a solicitação de elevação na área de trabalho interativa do chamador (com base na Diretiva de Grupo), usando o HWND transmitido pelo ShellExecute().

3.
   

Depois que o usuário der consentimento ou inserir credenciais válidas, o AIS recuperará o token de acesso correspondente associado com o usuário apropriado, se necessário. Por exemplo, um aplicativo que solicitar um requestedExecutionLevel de highestAvailable recuperará tokens de acesso diferentes para um usuário que é apenas membro do grupo Operadores de Backup e para um membro do grupo Administradores locais.

O AIS reemite a chamada CreateProcessAsUser(), fornecendo o token de acesso de administrador e especificando a área de trabalho interativa do chamador.

O UAC afetará seu aplicativo? — Como determinar se você terá que tornar seu aplicativo compatível com o UAC.

Se seu aplicativo será afetado ou não pelo UAC, isso dependerá do estado atual dele. Em inúmeros casos, nenhuma alteração é necessária para atender aos requisitos de segurança do Microsoft Windows®. Todavia, alguns aplicativos, inclusive aplicativos LOB (linha de negócios), podem exigir alterações em seus processos de instalação, funcionamento e atualização para funcionarem adequadamente em um ambiente de UAC do Windows Vista.

Observação   Se um aplicativo funciona bem como usuário padrão no Windows XP, ele funcionará bem como usuário PADRÃO no Windows Vista.

Criando aplicativos para Windows Vista — Como criar seu aplicativo com compatibilidade com o UAC.

A lista a seguir representa um fluxo de trabalho para criar seu aplicativo para Windows Vista:

1.
   

Etapa Um: Teste seu aplicativo quanto à compatibilidade.

2.
   

Etapa Dois: Dois: Classifique seu aplicativo como de usuário padrão, administrador ou usuário misto.

3.
   

Etapa Três: Recrie a funcionalidade de seu aplicativo para compatibilidade com UAC.

4.
   

Etapa Quatro: Recrie a interface de usuário de seu aplicativo para compatibilidade com UAC.

5.
   

Etapa Cinco: Recrie o instalador de seu aplicativo.

6.
   

Etapa Seis: Crie e incorpore um manifesto de aplicativo em seu aplicativo.

7.
   

Etapa Sete: Teste seu aplicativo.

8.
   

Etapa Oito: Assine seu aplicativo com Authenticode.

9.
   

Etapa Nove: Participe do Windows Vista Logo Program.

Implantando e corrigindo aplicativos de usuário padrão — Como garantir que seu aplicativo possa ser implantado para usuários padrão.

Geralmente, as empresas terão que considerar como instalarão aplicativos nas estações de trabalho de seus usuários de maneira automatizada, para, assim, reduzir os custos administrativos. Esse problema tem, fundamentalmente, duas partes: primeiro, como os aplicativos devem ser empacotados para implantação e, segundo, que tecnologia deve ser usada para implantá-los. No caso de ambientes empresariais menores, um mecanismo de implantação robusto e automatizado pode não ser necessário. Informações detalhadas sobre implantação e correção de aplicativos de usuário padrão podem ser encontradas no arquivo de Ajuda do Window.

Problemas comuns a solucionar — Lista problemas comuns de desenvolvimento e instalação que surgem nos aplicativos Microsoft .NET.

As próximas seções descrevem problemas comuns encontrados em aplicativos no Windows Vista.

Problemas comuns compreendem:
•   

Problemas na instalação do ActiveX
•   

Documentos ActiveX não são instalados
•   

Aplicativo, estrutura ou suplemento necessário
•   

A permissão administrativa é necessária para instalação/correção
•   

Locais de configuração de aplicativos por usuário
•   

Padrões de aplicativo de UAC/DR a salvar em um diretório protegido

Referências — Contém uma referência de virtualização e uma referência de configurações de segurança.

Esta seção contém uma referência de virtualização e uma referência de configurações secundárias.

Para obter informações detalhadas, consulte a seção Referências no arquivo de Ajuda do Windows.

Fonte


Encontrei uma discução sobre isso no dicasbcb


Eu ainda não implementei isto no código, pois estou em outras etapas do desenvolvimento, mas assim que o fizer posto aqui a minha experiência.


Espero que possa ajudar quem tiver problemas parecidos...

Contato]

blackwinner

Lolz, nem li essa parada toda, mas o importante é que o vista tem um sistema de permissões um pouco mais "apertado" do que o das outras distribuições do windows.

Então você vai ter que usar todas as APIs mais nova terminadas com "ex".. ex:

#include
#include
   


int main()
{
    LONG lParameter = 0;
    HKEY hKey = NULL;   
   
   
 lParameter =  RegCreateKeyEx(HKEY_CURRENT_USER, //1
                              "Chave",//2
                              0,//3
                              NULL,//4
                              0,//5
                              KEY_READ | KEY_WRITE,//6
                              NULL,//7
                              &hkSub,//8
                              NULL);
                             
}



Bem simples. =]
sergaralho.blogspot.com --> a informação como ela deve ser.. pura!

blackwinner

Esqueci de fala.. mas se você quiser usar as mais antigas, você vai ter que setar as permissões de acesso na mão, pode ser com uma strutura  security descriptor e a API RegSetKeySecurity.

Mas acho que usar o RegCreatKeyex muito mais simples.
sergaralho.blogspot.com --> a informação como ela deve ser.. pura!