Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-07-2010
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Acceso al registro de un usuario limitado (no administrador)

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;
  //Puertos COM disponibles en el PC
  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!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #2  
Antiguo 28-07-2010
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Bueno, siguiendo un poco con el qué estaba sucediendo he sacado la siguiente conclusión.

En el procedimiento anterior el problema está en el método openkey que sirve para abrir la clave e incluso para crearla si no existe. Lógicamente un usuario limitado no puede modificar el registro por lo que esta función siempre devuelve false y nunca se rellena el TString con los puertos COM del PC
__________________
"Patientia et constantia taelecum"
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema al entrar como usuario no administrador vicvil Varios 3 05-05-2008 15:18:01
Grabar en registro y directorio Windows como usuario limitado alquimista API de Windows 19 26-01-2008 16:04:01
acceso de usuario alfil123 Conexión con bases de datos 1 25-12-2007 08:56:53
Acceso Limitado Lorenzo07 Conexión con bases de datos 9 27-06-2007 23:14:20
Bloquear acceso al Administrador ODBC en Win XP DobleSiete API de Windows 0 04-02-2005 17:18:34


La franja horaria es GMT +2. Ahora son las 19:12:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi