Identificación de Unidades Conectadas

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Hola que tal amigos, creo que llevo como mil post jajaja no se crean.

Hace como dos días pregunte como poder hacer una condición para comparar el numero de serie unico y así poder usar el programa.
Lo he conseguido leyendo mucho y poniendo a prueba pero creanme que no he podido avanzar más, dejo codigo para el que ande como yo, y para los que quieran aportar un plus, esto es lo que llevo:

Serial_Number = 3290200975 -- Declaramos inicialmente el Serial Number de un disco duro externo

Serial_Nuevo = Drive.GetInformation("J:").SerialNumber; -- Obtenemos el Serial Number del disco conectado en la unidad establecida como J:

-- Ahora en esta sentencia comparamos los seriales anteriores

if (Serial_Nuevo ~= Serial_Number) then
Dialog.Message("Advertencia", "Este no es el disco original, por favor revisa bien tu unidad.", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Application.Exit();
end




Como se dan cuenta, la idea es que funcione en el disco establecido, pero... Lo que no he logrado hacer es que en la sección donde se declara la unidad, en vez de que se establezca directamente la unidad, que esta la detecte automáticamente, ya que en otras computadoras no sera la unidad J: ... En teoría que busque la unidad pero comparando el numero de serie, pero no he logrado hacerlo xc

Hice otro programa que seleccionas la unidad y obtiene el SN, si lo quieren lo comparto igual para quien pueda colaborar, quisiera expandirlo como por ejemplo:

Ver si es de escritura o no y poder cambiar la unidad (Para modo escritura, ponerla o quitarla)
Que en un combobox (del que seleccionas la unidad) se pongan automaticamente las unidades conectadas y no la lista que ya deje de la A a la Z jajaja
Y así...

Gracias! Quiero aportar mas cosas e ir avanzando en este ambito.
Lo ideal sería que usaras las función Drive.Enumerate para que obtengas todas las letras de unidades conectadas, después un filtro Drive.GetType para que obtengas solamente las del tipo DRIVE_REMOVABLE y poner el resultado en un ComboBox y que el usuario seleccione la unidad que corresponde para la comparación de números de serie
Si exactamente como dice Dowsher
como no sabes que letra de unidad se le asignara al disco cuando el usuario lo conecte entonces con Drive.Enumerate obtienes todas la letras de unidades usadas en el momento. Entonces como Drive.Enumerate retorna una tabla ahi pones el filtro que necesitas


Serial_Number = 3290200975
letras = Drive.Enumerate()
for index, letra in pairs(letras) do
      if Drive.GetType(letra) == DRIVE_REMOVABLE then
            serial = Drive.GetInformation(letra).SerialNumber
            if serial == Serial_Number then
                 ---- aqui lo que quieres que pase 
                 break;
            end
      end
end