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


 


Tema destacado: ¿Usas Skype? Protégete de los Skype Resolver


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderadores: Novlucker, seba123neo, kub0x, Eleкtro)
| | | |-+  Detectar disco duro externo por USB
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Detectar disco duro externo por USB  (Leído 104 veces)
Meta


Desconectado Desconectado

Mensajes: 3.043



Ver Perfil WWW
Detectar disco duro externo por USB
« en: 16 Abril 2018, 23:16 »

Hola:

Quiero ahcer un programa que al insertar un PenDrive o una disco duro externo por USB, lo detecte y borre todos los datos en su interior. Primero detecta, a los 10 segundos empieza a borrar todo.

Lo que he hecho pruebas que al conectar mi pendrive, es la letra L. Mi idea es tener siempre el programa en StartUp o inicio de Windows para que siempre esté activo, asechando que detecte una unidad L: para ser borrado.

He hecho este programa que solo lee todo lo que hay y se queda ahí. En C#.

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace Detector_PenDrive_HDD_Consola_01
  9. {
  10.    class Program
  11.    {
  12.        static void Main(string[] args)
  13.        {
  14.            // Título de la ventana.
  15.            string titulo = "Detectar alamcenamiento - C# 2017";
  16.            Console.Title = titulo;
  17.  
  18.            // Tamaño ventana consola.
  19.            Console.WindowWidth = 80; // X. Ancho.
  20.            Console.WindowHeight = 40; // Y. Alto.
  21.  
  22.            DriveInfo[] allDrives = DriveInfo.GetDrives();
  23.  
  24.            foreach (DriveInfo d in allDrives)
  25.            {
  26.                Console.WriteLine("Drive {0}", d.Name);
  27.                Console.WriteLine("  Tipo de unidad: {0}", d.DriveType);
  28.                if (d.IsReady == true)
  29.                {
  30.                    Console.WriteLine("  Etiqueta de volumen: {0}", d.VolumeLabel);
  31.                    Console.WriteLine("  Sistema de archivos: {0}", d.DriveFormat);
  32.                    Console.WriteLine(
  33.                        "  Espacio disponible para el usuario actual:{0, 15} bytes",
  34.                        d.AvailableFreeSpace);
  35.  
  36.                    Console.WriteLine(
  37.                        "  Espacio total disponible:          {0, 15} bytes",
  38.                        d.TotalFreeSpace);
  39.  
  40.                    Console.WriteLine(
  41.                        "  Tamaño total de la unidad:            {0, 15} bytes ",
  42.                        d.TotalSize);
  43.                }
  44.            }
  45.  
  46.            // Pulse cualquier tecla para salir.
  47.            Console.ReadKey();
  48.        }
  49.    }
  50. }

Si el programa está ejecutado, y introduces el pendrive o disco duro externo por USB, parace que necesita un plug & play. Esto parece complicado.

¿Alguna idea?

Saludos.


En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
Eleкtro
🌍 🕉️ 🛏️ Novato Astral 🛏️ 🕉️ 🌍 y...
Moderador Global
***
Desconectado Desconectado

Mensajes: 9.600


El sentido común es el menos común de los sentidos


Ver Perfil
Re: Detectar disco duro externo por USB
« Respuesta #1 en: 17 Abril 2018, 04:51 »

Mi idea es tener siempre el programa en StartUp o inicio de Windows para que siempre esté activo

Si la idea es "estar siempre activo en segundo plano" entonces lo ideal sería desarrollar un servicio de Windows.

Si el programa está ejecutado, y introduces el pendrive o disco duro externo por USB, parace que necesita un plug & play. Esto parece complicado.

Ese programa no hace otra cosa más que obtener (todos los tipos de) dispositivos conectados cuando ejecutas dicho programa, lo hace una única vez...

Una manera de hacer lo que requieres sería suscribirte a las clases de eventos de WMI, haciendo uso de la clase ManagementEventWatcher en .NET, como ya te demostré aquí:


...si te ofrecen una solución y no te interesas por documentarte sobre los miembros que se usan en ella, y si tampoco acudes a la MSDN para documentarte sobre las clases de WMI, pues es normal que no sepas como adaptar ese código que te mostré (o el del usuario @okik) para estas necesidades.

Otra forma distinta de hacer lo mismo (suscribirte a eventos de inserción y extracción de dispositivos extraibles) sería como mostré aquí:


Y también aquí (es el mismo código):


Saludos.


« Última modificación: 17 Abril 2018, 04:56 por Eleкtro » En línea


[/cent
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines