Detectar disco duro externo por USB

Iniciado por Meta, 16 Abril 2018, 23:16 PM

0 Miembros y 1 Visitante están viendo este tema.

Meta

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 (cpp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Detector_PenDrive_HDD_Consola_01
{
    class Program
    {
        static void Main(string[] args)
        {
            // Título de la ventana.
            string titulo = "Detectar alamcenamiento - C# 2017";
            Console.Title = titulo;

            // Tamaño ventana consola.
            Console.WindowWidth = 80; // X. Ancho.
            Console.WindowHeight = 40; // Y. Alto.

            DriveInfo[] allDrives = DriveInfo.GetDrives();

            foreach (DriveInfo d in allDrives)
            {
                Console.WriteLine("Drive {0}", d.Name);
                Console.WriteLine("  Tipo de unidad: {0}", d.DriveType);
                if (d.IsReady == true)
                {
                    Console.WriteLine("  Etiqueta de volumen: {0}", d.VolumeLabel);
                    Console.WriteLine("  Sistema de archivos: {0}", d.DriveFormat);
                    Console.WriteLine(
                        "  Espacio disponible para el usuario actual:{0, 15} bytes",
                        d.AvailableFreeSpace);

                    Console.WriteLine(
                        "  Espacio total disponible:          {0, 15} bytes",
                        d.TotalFreeSpace);

                    Console.WriteLine(
                        "  Tamaño total de la unidad:            {0, 15} bytes ",
                        d.TotalSize);
                }
            }

            // Pulse cualquier tecla para salir.
            Console.ReadKey();
        }
    }
}


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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Eleкtro

#1
Cita de: Meta en 16 Abril 2018, 23:16 PM
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.

Cita de: Meta en 16 Abril 2018, 23:16 PM
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):

Cita de: https://foro.elhacker.net/scripting/programa_que_detecte_cuando_se_introduce_una_unidad_extraible-t473240.0.html;msg2135896#msg2135896

Saludos.