TRegistry no Windows Server 2008

11/12/2009

0

Ola pessoal,      O problema é o seguite:      Preciso do "ProductId" e do "InstallDate" que no Regedit estão em: " SOFTWARE\Microsoft\Windows NT\CurrentVersion "       Quando estou no windows XP, Vista, 7 ou Server 2003 não tem problema, mas quando estou no Server 2008 não da certo, o " ProductId " retorna vazio e o " Installdate " igual a 0 e para testar também usei o " ProductName " que retorna  " Windows Server (R) 2008 Standard ", isso mostra que esta conectado e que apenas o " ProductId " e o   " Installdate "não são acessados.       Agradeço a ajuda.  
Teixeira

Teixeira

Responder

Posts

17/12/2009

Teixeira

Ola,

Tenho uma aplicação feita em Delphi 7 que utiliza informações do sistema operacional (serial , data de instalação e Nome do produto). No Delphi 7 utilizo a classe TRegistry para buscar essas informações, porem quando coloquei o programa para rodar em um servidor com Windows Server ® 2008 Standard essas informações (productId, installdate e ProductName) estão retornando com os respectivos valores ( '' , 0 e 'Windows Server ® 2008 Standard') ou seja (vazio, zero e Windows Server ® 2008 Standard), no principio achei que poderia ser problema com o usuário logado ou com o tipo de acesso aos dados, mas não, executei como administrador, como visto acima o parametro productName esta correto e apenas o productId e installDate errados.

Lembrando que no windows XP, Vista, 7 , Server 2003 esta funcionando corretamente.

Alguem tem alguma idéia para resolver este problema?

Se alguem tiver o win server 2008 para testar, abaixo esta o código para buscar estas informações.


...
uses Registry

.
..
...

procedure BitBtn1Click(Sender: TObject);
var Registro : TRegistry;
Prod, Data, Nome : string;
begin

Registro := TRegistry.Create;

Registro.Access := KEY_READ;

Registro.RootKey := HKEY_LOCAL_MACHINE;

if not Registro.RegistryConnect('Colocar aqui o nome da máquina') then
begin
Registro.CloseKey;
ShowMessage('ERRO na conexão da máquina.');
Exit;
end;

if Registro.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows NT\CurrentVersion') then
begin
Nome := Registro.ReadString('ProductName');
Prod := Registro.ReadString('ProductId');
Data := IntToStr(Registro.ReadInteger('InstallDate'));
ShowMessage('Nome : '+Nome +#13+
'Serial : '+Prod +#13+
'Data int : '+Data);
Registro.CloseKey;
end;


Agradeço a todos.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar