Ir ao conteúdo

Ajuda para ler o registro do Windows


Michel.

Posts recomendados

Postado

bom tenho o seguinte código

#include <cstdlib>
#include <iostream>
#include "windows.h"
#include <winreg.h>
#include <stdio.h>
using namespace std;

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)

{
HKEY keyHandle;
char rgValue [1024];
char fnlRes [1024];
DWORD size1;
DWORD Type;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion",0,KEY_QUERY_VALUE, &keyHandle);
size1=1023;
RegQueryValueEx( keyHandle, "CurrentVersion", NULL, &Type,(LPBYTE)rgValue,&size1);
if( rgValue == 6.1 ) system("pause");

return EXIT_SUCCESS;
}

Bom, acho simples, mais não estou conseguindo, o caso, é que queria que o programa fizesse a leitura da chave acima, e se caso for 6.1, procedesse com o resto do código, mais não funciona, é como se o valor 6.1 fosse outro, mais é 6.1...

Muito Obrigado

Postado
bom tenho o seguinte código

(...)
[B]char rgValue [1024];[/B]
(...)
if( [B]rgValue == 6.1[/B] ) system("pause");
(...)
}

Bom, acho simples, mais não estou conseguindo, o caso, é que queria que o programa fizesse a leitura da chave acima, e se caso for 6.1, procedesse com o resto do código, mais não funciona, é como se o valor 6.1 fosse outro, mais é 6.1...

Muito Obrigado

Vamos lá...

O nome de um vetor dá o endereço do primeiro elemento...

Então acho que dificilmente um endereço vai ser igual a 6.1...

E não adianta tentar comparar um caractere com 6.1 também...

Suponho que você queira comparar com a string "6.1"

Você tem que usar uma função de comparar strings da string.h ou criar uma própria.

Então o certo é assim:

if( !strcmp(rgValue,"6.1") ) system("pause");

Postado
Vamos lá...

O nome de um vetor dá o endereço do primeiro elemento...

Então acho que dificilmente um endereço vai ser igual a 6.1...

E não adianta tentar comparar um caractere com 6.1 também...

Suponho que você queira comparar com a string "6.1"

Você tem que usar uma função de comparar strings da string.h ou criar uma própria.

Então o certo é assim:

if( !strcmp(rgValue,"6.1") ) system("pause");

Muito obrigado mesmo, deu tudo certo aqui, infinitamente agradecido;

Michel.

EDIT: Outra dúvida, bom, como definir uma variável para cada string dessa?

Exemplo

if( !strcmp(rgValue,"6.1") ) int version=windows 7;

<<cout "sua versão é" version

em version, queria que aparecesse o windows 7 no console que coloquei no "int", obrigado novamente.

Postado
Muito obrigado mesmo, deu tudo certo aqui, infinitamente agradecido;

Michel.

EDIT: Outra dúvida, bom, como definir uma variável para cada string dessa?

Exemplo

if( !strcmp(rgValue,"6.1") ) int version=windows 7;

<<cout "sua versão é" version

em version, queria que aparecesse o windows 7 no console que coloquei no "int", obrigado novamente.

beleza.

1- cout funciona assim;

cout<<"Sua versão é: "<<version;

2- Inteiro serve para gravar número, então não tem como ele conter a string "windows 7" a menos que você atribuísse cada valor ASCII a cada posição do vetor e depois imprimisse um por um como caractere...

Strings são arrays de caracteres, a menos que você queira utilizar o objeto string...

Se quiser o array isso resolve:


char version[10]; /* Precisei declarar antes...*/
(...)
if( !strcmp(rgValue,"6.1") ) strcpy(version,"windows 7");

cout<<"Sua versão é: "<<version;

Se quiser objeto string:


string version; /* Precisei declarar antes...*/
(...)
if( !strcmp(rgValue,"6.1") ) version.assign("windows 7");

cout<<"Sua versão é: "<<version;

Mas se você quiser ter todas as possibilidades gravadas em variáveis, aí você terá de criar um vetor de strings...

Postado

Muito obrigado mesmo novamente, consegui compilar tudo certo como desejava, qualquer eventual dúvida posto aqui;

Agradecido, Michel.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...