elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Nueva pestaña a la Propiedades de Archivo en Windows
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Nueva pestaña a la Propiedades de Archivo en Windows  (Leído 2,120 veces)
GaudyG

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Nueva pestaña a la Propiedades de Archivo en Windows
« en: 29 Septiembre 2019, 16:57 pm »

Buenos días, estoy interesado en programar una nueva pestaña de la propiedad de archivos de Windows, tal como lo hace el programa "ExePropierties" o "MediaTab", pero nunca antes he programado para escritorio de Windows ni mucho menos una integración a la interfaz de Windows.

Quisiera que me indicaran que es lo que debería saber para hacerlo:

Que herramienta utilizar
Que SDK utilizar
Que lenguaje se usa


En línea

RayR

Desconectado Desconectado

Mensajes: 239


Ver Perfil
Re: Nueva pestaña a la Propiedades de Archivo en Windows
« Respuesta #1 en: 29 Septiembre 2019, 20:46 pm »

Eso se llama extensiones al shell. Es tema avanzado y necesitas conocer muy bien la API de Windows y, aunque sea a nivel introductorio/intermedio, la creación de servidores COM. Algunos links útiles:

http://winapi.conclase.net/
https://docs.microsoft.com/en-us/windows/win32/com/the-component-object-model

Luego de eso es buscar "Shell extensions".

Para eso usarías C++ y necesitas Visual C++. Otros compiladores como MinGW, que usan por defecto Dev-C++ y Code::Blocks, no sirven para esto.


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: Nueva pestaña a la Propiedades de Archivo en Windows
« Respuesta #2 en: 29 Septiembre 2019, 23:33 pm »

https://docs.microsoft.com/en-us/windows/win32/shell/shell-exts

Por mi poca experiencia con la Api de Windows no hay problemas utilizando codeblocks. Aunque visual studio te permite modificar y crear algunos archivos que codeblocks no contempla/facilita, no dejan de ser archivos de texto y hay guias para aprender a crearlos y utilizarlos a mano. Por ejemplo los archivos .rc para añadir iconos, imágenes y sonidos.
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

RayR

Desconectado Desconectado

Mensajes: 239


Ver Perfil
Re: Nueva pestaña a la Propiedades de Archivo en Windows
« Respuesta #3 en: 30 Septiembre 2019, 01:02 am »

Por supuesto que MinGW se puede usar para programación con la API de Windows, pero es limitado. Obviamente no me refiero a cosas simples como #defines o archivos sencillos de texto, que normalmente se pueden crear o modificar sin mayor problema. Pero Windows se compone de un montón de APIs y tecnologías y MinGW sólo es compatible con un subconjunto de ellas y muchas veces de forma incompleta, y eso no se arregla modificando archivos de texto. Sin ir muy lejos, hay dos formas estándar (una obsoleta y una moderna) en la API de Windows de mostrar un cuadro de diálogo para seleccionar exclusivamente directorios (no archivos), y ninguna de las dos se puede en MinGW. No queda más que programar una solución propia, o hacer modificaciones importantes y muy tediosas a lo que ya se incluye. MinGW-w64 sí que soporta la forma obsoleta, pero la actual, introducida con Windows Vista, no hay manera.

En este caso, es aún peor, ya que las extensiones al shell se deben implementar dentro de lo que se conoce como servidores COM dentro de proceso (in-process). COM es una especificación en la que normalmente se usan tecnologías propias de Microsoft. Por ejemplo, un lenguaje de Microsoft, que no es C++, junto con un un compilador propietario de Microsoft (que se incluye con Visual Studio), el cual genera unos archivos binarios en un formato específico. Aclarar que, para facilitar nuestro trabajo, nosotros como programadores podemos crear simplemente nuestros componentes, en C++, y las herramientas de Visual Studio se encargan del resto, como invocar al compilador antes mencionado. Por supuesto, MinGW no proporciona ni admite nada de esto. Aclaro también que en internet se puede encontrar información sobre crear objetos COM con C puro (lo que implicaría que se puede con MinGW), pero no son componentes COM totalmente "reales", no cumplen al 100% con la especificación. Los podríamos usar con nuestros programas, pero no de forma universal, que es el objetivo de COM. Aunque estrictamente hablando, para el caso concreto de extensiones al shell, no se necesita implementar todo lo de un servidor COM general, hay que usar las herramientas de Microsoft para evitar problemas.

Editado un par de typos y, aprovechando, unas puntualizaciones.
« Última modificación: 1 Octubre 2019, 07:43 am por RayR » En línea

GaudyG

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: Nueva pestaña a la Propiedades de Archivo en Windows
« Respuesta #4 en: 1 Octubre 2019, 16:55 pm »

Eso se llama extensiones al shell. Es tema avanzado y necesitas conocer muy bien la API de Windows y, aunque sea a nivel introductorio/intermedio, la creación de servidores COM. Algunos links útiles:

http://winapi.conclase.net/
https://docs.microsoft.com/en-us/windows/win32/com/the-component-object-model

Luego de eso es buscar "Shell extensions".

Para eso usarías C++ y necesitas Visual C++. Otros compiladores como MinGW, que usan por defecto Dev-C++ y Code::Blocks, no sirven para esto.
Muchas gracias, desconozco que tanto es necesario conocer de la API de Windows, pero lo que necesito de la librería sería crear la pestaña solo para una extensión en específico, la información a imprimir en dicha ventana lo puedo conseguir todo extrayendo de la cabecera de los archivos. Espero introducirme al tema (y a aprender a programar C++) este fin de semana.

Esta bien si llegase a tener dudas lo consulte en este tema?

Por cierto, a que te refieres con Servidores COM o que relación tiene con los Shell Extension?

Muchas gracias
« Última modificación: 1 Octubre 2019, 17:01 pm por GaudyG » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.042



Ver Perfil
Re: Nueva pestaña a la Propiedades de Archivo en Windows
« Respuesta #5 en: 1 Octubre 2019, 18:14 pm »

Saludos,

- Me parece que se refiere a los Objetos COM, estas son bibliotecas o librerías (.DLL) que se cargan cuando sucede un evento en Windows, por ejemplo, para windows muestre las miniaturas de los íconos del escritorio, tiene que ejecutarse una dll que identifique los tipos de archivos y cargue las miniaturas correspondientes.

- Lo mismo sucede con el evento que se lanza al mostrar las Propiedades de Archivos o carpetas, por ejemplo el software HashTab que agrega una pestaña más a las propiedades de los archivos para calcular los Hash, se integra en la siguiente clave del Registro de Windows:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shellex\PropertySheetHandlers\HashTab

-- Ahí hay un puntero CLSID: {8A56567E-A333-4843-B6E1-C3A262E41D8C} que a su vez apunta a "C:\Program Files\HashTab Shell Extension\HashTab64-6.0.0.34.dll" que justamente es el Objeto COM o ejecutable encargado de rellenar esa nueva pestaña apartada en el Registro de Windows.

- Tengo entendido de que Visual Studio IDE permite crear proyectos en Visual Basic o C# para crear Objetos COM. De todo esto me enteré viendo una conferencia que tiene más que ver Persistencia de Malware, quizá le interese a alguno:

Sheila Ayelen Berta - The Art of Persistence: "Mr. Windows… I don’t wanna go :(" [RootedCON2019-ESPAÑOL]: https://youtu.be/xXzDPI7MCuY
En línea

RayR

Desconectado Desconectado

Mensajes: 239


Ver Perfil
Re: Nueva pestaña a la Propiedades de Archivo en Windows
« Respuesta #6 en: 1 Octubre 2019, 20:26 pm »

De la API de Windows necesitas conocer muy bien cómo se crean y cómo funcionan las ventanas, eventos y mensajes, controles, y cómo crear dlls. Mucho de esto lo puedes encontrar en el primer link que puse. Básicamente, de ahí sáltate todo lo de GDI, que es para gráficos y no lo necesitas.

COM es una tecnología de Microsoft para crear componentes que en teoría se pueden usar desde programas hechos en cualquier lenguaje, independientemente del lenguaje en el que el componente haya sido creado. Los archivos que contienen estos componentes se llaman servidores COM, que pueden ser .exe (en cuyo caso se llaman servidores fuera de proceso) o .dll (servidores dentro de proceso) con ciertas características especiales. Las extensiones del Shell se deben crear como servidores COM; en concreto, el tipo de extensión que tú necesitas crear es un servidor dentro de proceso, es decir, una dll de COM. Para tu ejemplo, básicamente cuando haces clic derecho/propiedades sobre un archivo, el proceso explorer (el shell) busca en el registro de Windows a ver si hay algún componente COM registrado para ese tipo de archivo y, en su caso, carga la dll que lo contiene (el servidor COM que creamos) y llama a una función dentro de ella y ésta se encarga de crear la pestaña extra y agregarla al cuadro de diálogo. Así es como funciona el mecanismo de las extensiones y por eso hay que saber COM.

Técnicamente se puede programar COM en otros lenguajes, como VB6 o Delphi, pero uno está obsoleto y el otro ya no se usa mucho. Y aunque C# y VB.Net también sirven para COM en general, no se deben usar para este tipo de extensiones al shell, lo que deja a C++ básicamente como la única opción. Y deberías usar Visual Studio porque en caso contrario, y por varias cuestiones que serían largas de explicar, casi tendrás garantizados muchos problemas y quebraderos de cabeza.

Y sí, podrías poner aquí o abrir tema nuevo si tienes otras dudas.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Docman: Abrir un enlace en una nueva venta/pestaña
Desarrollo Web
sparrowise 4 5,329 Último mensaje 13 Enero 2011, 16:44 pm
por sparrowise
Chrome 15 llega con cambios en la página de Nueva Pestaña
Noticias
wolfbcn 0 1,574 Último mensaje 26 Octubre 2011, 13:15 pm
por wolfbcn
Abrir nueva pestaña en W8? (solucionado con third apps)
Windows
adgellida 0 1,781 Último mensaje 7 Diciembre 2012, 00:24 am
por adgellida
Problema en nueva pestaña en mozilla firefox
Mensajería
viktorioiq 5 6,136 Último mensaje 14 Diciembre 2012, 16:13 pm
por viktorioiq
Firefox mostrará anuncios en la nueva pestaña
Noticias
wolfbcn 3 2,087 Último mensaje 12 Febrero 2014, 19:41 pm
por 0xDani
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines