Que tal !, hace tiempo que no tocaba un lenguaje de programacion , y bueno quise tocar de nuevo el delphi, viendo una pregunta en el sub-foro de dudas y preguntas se me ocurrio hacer esto, es para averiguar el sistema operativo, el servicepack y el registered owner

Código: Seleccionar todo

uses ComObj;
function KSO(ServicePack:bool = false;RegisteredOwner:bool = false):string;
var
      V:olevariant;
      T:string;
begin
      V := CreateoleObject('wscript.shell');
      T := V.regread('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Productname');
      if servicepack then T := T + ' ' + V.regread('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CSDVersion');
      if RegisteredOwner then T := T + ' ' + V.regread('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\RegisteredOwner');
      KSO := T;
end;
Los parametros son opcionales, (sp y ro)

ejemplo de uso:
showmessage(KSo(true,true));
o simplemente
showmessage(KSo);
(aqui nadamas nos devolveria el sistema operativo

Salu2
Muchísimas gracias por el code.

La función esta muy bien, y funciona casi perfecta en mi Windows 7.

Te muestro el resultado de:

showmessage(KSo);

Imagen


pero me da error al llamar a :

showmessage(KSo(true,true));
Imagen

Imagen


No se por que los da, de todas maneras el sistema operativo lo coge muy bien. Se agradece el aporte
Imagen
Hola K-0Z

Estoy estudiando el code que has publicado y la verdad es que es muy interesante.

tengo algunas dudas con respecto al code que no consigo despejar con el google y no me permiten la comprensión total del code.

En primer lugar usas las librerias ComObj que supongo que serán para trabajar con OLE.

Lo cierto es que no se exactamente que es el la programación en OLE, creo que tiene algo que ver con windows pero no se exactamente.

Luego creas una variable de tipo variable OLE. Donde guardas un Objeto OLE del tipo wscript.shell que permite trabajar con el registro.

Luego lees del registro la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Productname y la guardas en T como string.

Luego compruebas si servicepack y RegisteredOwner estan a true y buscas sus valores en el registro asignandolos a la variable.

Luego asignas el valor de la variable al retorno de la funcion.

Estoy en lo cierto?

Mi duda es sobretodo con el concepto de OLE que no lo tengo claro. Y si las claves del registro es la misma en todos los SO de windows?

De todas maneras gracias por el code es muy útil y justo lo que estaba buscando.
Imagen
konanxp escribió: Mi duda es sobretodo con el concepto de OLE que no lo tengo claro. Y si las claves del registro es la misma en todos los SO de windows?

De todas maneras gracias por el code es muy útil y justo lo que estaba buscando.
www.alegsa.com.ar/Dic/ole.php escribió:(Object Linking and Embedding). Tecnología de Microsoft para compartir información entre distintas aplicaciones de Windows. Permite la creación de documentos o programas incorporando elementos de otros. Para la ejecución de dicho programa/documento deben existir los archivos o programas necesarios para ejecutarlos. Por ejemplo, si en un documento se utilizan gráficos Excel, para visualizarse debe estar instalado el programa Excel o un visualizador de Excel.

El antecesor de OLE 1.0 fue el DDE. El OLE 2.0 fue renombrado como ActiveX.
Por tanto creas un objeto de tipo Shell (Consola, CMD, Simbolo del sistema, como quieras llamarlo) y haces la petición.
We do what we must, because, we can-> [www.youtube.com/watch?v=Y6ljFaKRTrI]
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit
konanxp escribió:Por cierto el error al abrir la clave del registro para leerla tiene solución?

Uso windows 7 ultimate.
La de CSDVersion no no tiene solución, porque? por que simplemente no existe W7 no tiene Service Pack por tanto no puedes conseguir ese valor
Puedes usar un Pos para detectar si es W7 y si es asi te saltas esa parte y no te tira error
We do what we must, because, we can-> [www.youtube.com/watch?v=Y6ljFaKRTrI]
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit
Gracias por la respuesta, otra cosa, el registro de donde sacamos el sistema operativo es el mismo en todos los windows, win98, win me , win xp, etc?.

Cómo puedo saber si es un sistema de 32 o 64 bits?

Gracias.
Imagen
mmm solo lo he probado de WXP a W7, en los demas no.
Puedes revisar este link.
[Enlace externo eliminado para invitados] ... p?t=206540
We do what we must, because, we can-> [www.youtube.com/watch?v=Y6ljFaKRTrI]
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit
K-OZ que bueno que regreses a la programacion se ve bueno tu code
Saludos
Mi blog

www.MasaSoftware.blogspot.com

Encontraras herramientas como el Masacrypter mods Indetectables joiner

___________
Responder

Volver a “Fuentes”