PDA

Ver la Versión Completa : Resgistro Windows - informacion sobre claves?


alt126
21-03-2005, 11:08:10
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, 12:03:38
el usuario:
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, 12: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 (http://www.clubdelphi.com/foros/showpost.php?p=73284&postcount=2)


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, 12: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, 12:56:51
¿ 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, 12:11:28
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, 12:46:43
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, 13: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, 20: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, 20:30:10
Vuelvo a decir, que creo que buscarla directamente en el registro te puede dar problema segun las versiones...

Opino igual.

barman
28-03-2005, 20:31:11
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, 13:15:09
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