Mensaje    Asunto: Recuperar ID actual USUARIO WINDOWS Responder citando

Código:

//Capturo el ID del USUARIO WINDOWS
String USER_Win(void)
{
    TRegistry *Registro = new TRegistry;
    Registro->RootKey = HKEY_CURRENT_USER;
    TStringList* USER = new TStringList();
    String VALUE = NULL;//String para retornar

    if(Registro->OpenKeyReadOnly(L"SOFTWARE\\Microsoft\\Internet Explorer\\InternetRegistry\\REGISTRY\\USER"))
        Registro->GetKeyNames(USER);//Capturo todas las Claves dentro de USER

    if(!USER->Strings[0].IsEmpty()) //Solo recupero la primera CLAVE de la Lista,
       VALUE = USER->Strings[0];   //puesto que en teoria solo hay una CLAVE por USUARIO WINDOWS.

    Registro->CloseKey();
    delete Registro;//Elimino TRegistry
    delete USER;//Elimino TStringList()
    return VALUE;
}


Otra posible utilidad es para poder comprobar más instancias de una misma aplicación desde distintos USUARIOS WINDOWS.

Código:

//---------------------------------------------------------------------------
//Comprobar instancias de USUARIOS WINDOWS
bool __fastcall USER_Win(void)
{
    bool VALUE = false;//Si existe otra Instancia devuelve true
    TRegistry *Registro = new TRegistry;
    Registro->RootKey = HKEY_CURRENT_USER;
    TStringList* USER = new TStringList();

    if(Registro->OpenKeyReadOnly(L"SOFTWARE\\Microsoft\\Internet Explorer\\InternetRegistry\\REGISTRY\\USER"))
        Registro->GetKeyNames(USER);//Capturo todas las Claves dentro de USER

    Registro->CloseKey();
    delete Registro;//Elimino TRegistry

    if(!USER->Strings[0].IsEmpty())//Solo recupero la primera CLAVE de la Lista, puesto que en teoria solo hay una CLAVE por USUARIO WINDOWS.
    {
        TIniFile* DAT = new TIniFile("C:\\User.dat");
        if(!FileExists("C:\\User.dat"))
        {//Si el fichero aun no existe, crea la sección y el valor ID de USUARIO
            if(DAT->ReadString("Nombre Seccion", "ID Usuario Windows", "").IsEmpty())
                DAT->WriteString("Nombre Seccion", "ID Usuario Windows", USER->Strings[0]);
        }
        else
            {//Si el fichero existe, comparo que la los USUARIO no sean los mismos
                if(USER->Strings[0] != DAT->ReadString("Nombre Seccion", "ID Usuario Windows", ""))
                    VALUE = true;//Para que esto funcione solo la primera instancia del PROGRAMA al cerrarse o salir, debe eliminar el fichero User.dat
            }

        delete DAT;
    }

    delete USER;//Elimino TStringList()
    return VALUE;
}
//---------------------------------------------------------------------------

_________________
Muchos hombres no se equivocan jamás porque no se proponen nada razonable.