Buenas a tod@s:
Tengo una aplicación casi desarrollada que he probado en varios PCs sin problemas, sin embargo en uno me encontré un problema y todo viene porque el usuario en cuestión no tiene privilegios de administrador.
Para empezar uso un componente de protección llamado TmxProtector y uso una protección con registro. Es decir, el componente me crea un número de serie que tengo q pasar para poder registrar el producto. Lógicamente para poder registrarlo necesito escribir en el registro de windows y esto sólo lo puedo hacer es si soy administrador. Bueno pues esto lo hice desde una cuenta de administrador y volví a la cuenta del usuario limitado.
Cuando intento arrancar la aplicación me llevo la sorpresa que se finaliza como si no estuviese registrada, así que supuse que el componente TmxProtector tampoco podía acceder en lectura al registro.
Me las ingenio para poder solventar este problema y la aplicación continúa, pero para mi sorpresa no se me abre los puertos COM que tengo configurados y es que antes de abrirlo yo accedo al registro para leer los puertos COM que tiene el PC (cosa que me parece lógica antes de intentar abrir puertos a lo loco) y al parecer es que, efectivamente, no tengo acceso ni en modo lectura al registro.
Para acceder a los puertos series registrados uso la función adaptada encontrada en el club:
Código Delphi
[-]
procedure ListaPuertosCOM();
var
N : Integer;
begin
PuertosCOM := TStringList.Create;
with TRegistry.create do
try
rootkey:=HKEY_LOCAL_MACHINE;
if keyexists('HARDWARE') then begin
if openkey('HARDWARE',false)then begin
if keyexists('DEVICEMAP') then begin
if openkey('DEVICEMAP',false)then begin
if keyexists('SERIALCOMM') then begin
if openkey('SERIALCOMM',false)then begin
GetValueNames(PuertosCOM);
for N:=0 to PuertosCOM.count-1 do
begin
PuertosCOM.Strings[N]:=ReadString(PuertosCOM.strings[N]);
end;
end
end;
end;
end;
end;
end;
finally free;
end;
PuertosCOM.Sort;
end;
Mi pregunta entonces es: ¿Hay alguna otra forma de saber que puertos tengo en el PC desde un usuario limitado?
Gracias y un saludo!