Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Resgistro Windows - informacion sobre claves? (https://www.clubdelphi.com/foros/showthread.php?t=19637)

alt126 21-03-2005 10:08:10

Resgistro Windows - informacion sobre claves?
 
Me gustaria saber la ruta de algunas aplicaciones, y me gustaria obtenerlas del registro por ser el unico lugar fiable y seguro que las rutas son correctas. El problema es que no se que claves son...

Bueno, por ejemplo, si quiero saber la ruta de "Mis Documentos", pero del usuario que se ha conectado...la ruta es:

- C:\\documents and settings\\"nombre usuario"\\Mis documentos -

Pero como obtengo el "nombre usuario"...???

GRACIAS!!

Antonio

Lepe 21-03-2005 11:03:38

el usuario:
Código Delphi [-]
Function NombreUsuarioWindows: String; 
var
   pcComputerUser : PChar;
   dwCSize    : DWORD;
begin
     Result := '' ;
     dwCSize := MAX_COMPUTERNAME_LENGTH + 1;
     GetMem( pcComputerUser, dwCSize );
     try
            if Windows.GetUserName( pcComputerUser, dwCSize ) then
               Result := pcComputerUser;
     finally
            FreeMem( pcComputerUser );
     end;
end;

Neftali [Germán.Estévez] 21-03-2005 11:04:37

En éste hilo tienes la función y los parámetros necesarios para obtener los directorios "especiales" como: Mis Documentos, Directorio temporal, directorio de Windows, escritorio,...

hilo

Código Delphi [-]
  CSIDL_DESKTOP                    C:\WINDOWS\Escritorio
  CSIDL_PROGRAMS                  C:\WINDOWS\Menú Inicio\Programas
  CSIDL_PERSONAL                   C:\Mis documentos
  CSIDL_FAVORITES                  C:\WINDOWS\Favoritos
  CSIDL_STARTUP                    C:\WINDOWS\Menú Inicio\Programas\Inicio
  CSIDL_RECENT                      C:\WINDOWS\Recent
  CSIDL_SENDTO                      C:\WINDOWS\SendTo
  CSIDL_STARTMENU                 C:\WINDOWS\Menú Inicio
  CSIDL_DESKTOPDIRECTORY      C:\WINDOWS\Escritorio
  CSIDL_NETHOOD                    C:\WINDOWS\Entorno de red
  CSIDL_FONTS                        C:\WINDOWS\FONTS
  CSIDL_TEMPLATES                 C:\WINDOWS\ShellNew

Lepe 21-03-2005 11:09:19

Compañero Neftali, creo que hemos metido la pata, este foro es de C++ builder....¿ y que hago yo aqui ?

Perdon.

Neftali [Germán.Estévez] 21-03-2005 11:56:51

Cita:

Empezado por Lepe
¿ y que hago yo aqui ?

Pues lo mismo que yo... más perdidos los dos "que un pulpo en un garaje" :D:D:D.
Discupas a la gente del foro de C++.
De todas formas dejo el código Delphi, porque seguramente puede servir la API y los parámetros para llamarla.

alt126 23-03-2005 11:11:28

Gracias por contestar!!
 
No me sirve mucho, pero bueno....se agradece el intento!! ;)

Lo que yo necesito, son las claves del registro de windows!!

Un saludo, y un euro al que me lo diga, jejeje!

Antonio

Neftali [Germán.Estévez] 23-03-2005 11:46:43

Cita:

Empezado por alt126
Lo que yo necesito, son las claves del registro de windows!!

Es justo lo que hace esa función; Para que no tengas que tener buscar tú en el registro de Windows segun el directorio que estés buscando (cambia la clave) y segun la versión de Windows que estés usando (tambien cambia la clave) ésta función te busca el path de éstos directorios independientemente sin que tú tengas que preocuparte de la versión del S.O. y del usurio actual.

Vuelvo a decir, que creo que buscarla directamente en el registro te puede dar problema segun las versiones...

Lepe 23-03-2005 12:37:18

No pongo la mano en el fuego, pero creo que la función Windows.GetUserName tambien existe en C++ builder.

¿Para que usar las claves del registro, si tienes una función que ya lo hace?

De todas formas, podrías mirar el hilo que Neftali puso, SHGetSpecialFolderLocation tambien debe estar en C++

Suerte !! y siento no poder ayudar más :(

barman 28-03-2005 19:29:01

Gueno, no preocuparse que ya paso yo por aqui.

A ver si te sirve.

#include <registry.hpp>

void __fastcall TForm1::FormCreate(TObject *Sender)
{
TRegistry* thisReg = new TRegistry();
thisReg->RootKey = HKEY_LOCAL_MACHINE;
thisReg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", false);
ShowMessage (thisReg->ReadString("Personal"));
thisReg->CloseKey();
delete (thisReg);

}

barman 28-03-2005 19:30:10

Cita:

Empezado por Neftali
Vuelvo a decir, que creo que buscarla directamente en el registro te puede dar problema segun las versiones...

Opino igual.

barman 28-03-2005 19:31:11

Cita:

Empezado por alt126
Un saludo, y un euro al que me lo diga, jejeje!

Jodio tacaño, unas birritas y un poco de jamon serrano.

alt126 01-04-2005 12:15:09

Funciona perfectamente!!
 
Muchas gracias por vuestra ayuda...siento no haber contestado antes, pero he estado muy liado...cosas de la informatica...unos dias te sale todo y tienes tiempo libre para contar moscas y otros dias es todo tan dificil que podrias estar 5 vidas seguidas y no te saldria ninguna solucion...:mad:

Igual que el futbol..."...la informatica es asi...ya no hay problema pequeño..." :p

La solucion propuesta me funciona perfectamente...respecto a lo del euro, puessssssss, si eso te lo cambio por una cerveza y unas tapitas de jamon...pero tendras que venir hasta aki (Gastos derivados del viaje no incluidos)...asi k no se si sale a cuenta o no :D :D :D .

Un saludo,

Antonio


La franja horaria es GMT +2. Ahora son las 09:38:16.

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