Remover o Messenger do Windows XP via Delphi
Caros colegas, estou com um problema. Quero criar uma rotina para desintalar o Messenger do Windows XP.
Preciso ler um valor no registro do windows, na chave Key_Local_Machine\Software\Microsoft\Windows NT\CurrentVersion (Valor é o PathName) então preciso que o Windows execute um comando, estou fazendo assim:
procedure TForm1.Button3Click(Sender: TObject);
var
Registry: TRegistry;
Path: String;
begin
{ Cria o objeto TRegistry }
Registry := TRegistry.Create;
{ seta a chave raiz; ex. hkey_local_machine }
Registry.RootKey := hkey_local_machine;
{ Abre e cria a chave }
Registry.OpenKey(´Software\Microsoft\Windows NT\CurrentVersion´, true);
{ Lê o valor }
Path := Registry.ReadString(´PathName´);
{ Fecha e libera a chave}
Registry.CloseKey;
Registry.Free;
{Executa o comando}
Winexec(´Rundll32 advpack.dll,LaunchINFSection´+Path+´\INF\msmsgs.inf,BLC.remove´, SW_SHOWNORMAL);
end;
Criei uma variavel Path: String, para armazenar o valor do registro.
Então preciso que o windows execute um command com base no path da instação do windows.
WinExec (´RunDLL32 .dll,LaunchINFSection´+Path+´\INF\msmsgs.inf,BLC.Remove´, SW_SHOWNORMAL);
Mas quando compilo da erro de incompatibilidade de Strting com Pchar:
Incompatible types: ´String´ and ´PChar´
Sendo que ao ler o valor PathName no registro obtenho um valor string, já para executar o comando a variavel deve ser PChar... acredito que tenha que converter a Variavel Path de String para Pchar. Como posso fazer isso?
Preciso ler um valor no registro do windows, na chave Key_Local_Machine\Software\Microsoft\Windows NT\CurrentVersion (Valor é o PathName) então preciso que o Windows execute um comando, estou fazendo assim:
procedure TForm1.Button3Click(Sender: TObject);
var
Registry: TRegistry;
Path: String;
begin
{ Cria o objeto TRegistry }
Registry := TRegistry.Create;
{ seta a chave raiz; ex. hkey_local_machine }
Registry.RootKey := hkey_local_machine;
{ Abre e cria a chave }
Registry.OpenKey(´Software\Microsoft\Windows NT\CurrentVersion´, true);
{ Lê o valor }
Path := Registry.ReadString(´PathName´);
{ Fecha e libera a chave}
Registry.CloseKey;
Registry.Free;
{Executa o comando}
Winexec(´Rundll32 advpack.dll,LaunchINFSection´+Path+´\INF\msmsgs.inf,BLC.remove´, SW_SHOWNORMAL);
end;
Criei uma variavel Path: String, para armazenar o valor do registro.
Então preciso que o windows execute um command com base no path da instação do windows.
WinExec (´RunDLL32 .dll,LaunchINFSection´+Path+´\INF\msmsgs.inf,BLC.Remove´, SW_SHOWNORMAL);
Mas quando compilo da erro de incompatibilidade de Strting com Pchar:
Incompatible types: ´String´ and ´PChar´
Sendo que ao ler o valor PathName no registro obtenho um valor string, já para executar o comando a variavel deve ser PChar... acredito que tenha que converter a Variavel Path de String para Pchar. Como posso fazer isso?
Ibraimjr
Curtidas 0
Respostas
Sandra
09/08/2005
Criei uma variavel Path: String, para armazenar o valor do registro.
Então preciso que o windows execute um command com base no path da instação do windows.
WinExec (´RunDLL32 .dll,LaunchINFSection´+Path+´\INF\msmsgs.inf,BLC.Remove´, SW_SHOWNORMAL);
Mas quando compilo da erro de incompatibilidade de Strting com Pchar:
Incompatible types: ´String´ and ´PChar´
Sendo que ao ler o valor PathName no registro obtenho um valor string, já para executar o comando a variavel deve ser PChar... acredito que tenha que converter a Variavel Path de String para Pchar. Como posso fazer isso?
ibraimjr,
Se o problema é converter a variável Path de String para PChar, basta usar:
WinExec (´RunDLL32 .dll, LaunchINFSection´ + PChar(Path) + ´\INF\msmsgs.inf, BLC.Remove´, SW_SHOWNORMAL);
Verifique se atende ao seu propósito. :D
GOSTEI 0