¿Cómo consigo el número de serie del disco duro sin necesidad de utilizar DLL y el apoyo de VISTA¿Cómo uso C# para obtener el número de serie del disco duro?
8
A
Respuesta
2
Prueba este código de here y háganos saber si funciona:
// Namespace Reference
using System.Management;
/// <summary>
/// method to retrieve the selected HDD's serial number
/// </summary>
/// <param name="strDriveLetter">Drive letter to retrieve serial number for</param>
/// <returns>the HDD's serial number</returns>
public string GetHDDSerialNumber(string drive)
{
//check to see if the user provided a drive letter
//if not default it to "C"
if (drive == "" || drive == null)
{
drive = "C";
}
//create our ManagementObject, passing it the drive letter to the
//DevideID using WQL
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"" + drive +":\"");
//bind our management object
disk.Get();
//return the serial number
return disk["VolumeSerialNumber"].ToString();
}
EDIT: Y si eso no lo hace trabajo, prueba este código de la CodeProject:
en primer lugar, vamos a crear una clase para almacenar información sobre un disco duro:
class HardDrive
{
private string model = null;
private string type = null;
private string serialNo = null;
public string Model
{
get {return model;}
set {model = value;}
}
public string Type
{
get {return type;}
set {type = value;}
}
public string SerialNo
{
get {return serialNo;}
set {serialNo = value;}
}
}
A continuación, consultar la clase Win32_DiskDrive:
ManagementObjectSearcher searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach(ManagementObject wmi_HD in searcher.Get())
{
HardDrive hd = new HardDrive();
hd.Model = wmi_HD["Model"].ToString();
hd.Type = wmi_HD["InterfaceType"].ToString();
hdCollection.Add(hd);
}
Ahora tenemos que extraer el número de serie de la clase Win32_PhysicalMedia :
searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
int i = 0;
foreach(ManagementObject wmi_HD in searcher.Get())
{
// get the hard drive from collection
// using index
HardDrive hd = (HardDrive)hdCollection[i];
// get the hardware serial no.
if (wmi_HD["SerialNumber"] == null)
hd.SerialNo = "None";
else
hd.SerialNo = wmi_HD["SerialNumber"].ToString();
++i;
}
Ahora nos muestran información de nuestro disco duro:
// Display available hard drives
foreach(HardDrive hd in hdCollection)
{
Console.WriteLine("Model\t\t: " + hd.Model);
Console.WriteLine("Type\t\t: " + hd.Type);
Console.WriteLine("Serial No.\t: " + hd.SerialNo);
Console.WriteLine();
}
14
using System.Management;
public string GetHDDSerial()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
foreach (ManagementObject wmi_HD in searcher.Get())
{
// get the hardware serial no.
if (wmi_HD["SerialNumber"] != null)
return wmi_HD["SerialNumber"].ToString();
}
return string.Empty;
}
0
Hola acaba de encontrar este enlace
que trabajó para mí:
Herre es la parte esencial del código:
/// <summary>
/// return Volume Serial Number from hard drive
/// </summary>
/// <param name="strDriveLetter">[optional] Drive letter</param>
/// <returns>[string] VolumeSerialNumber</returns>
public string GetVolumeSerial(string strDriveLetter)
{
if(strDriveLetter=="" || strDriveLetter==null)
strDriveLetter="C";
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"" + strDriveLetter +":\"");
disk.Get();
return disk["VolumeSerialNumber"].ToString();
}
4
aquí es el código que funciona para mí de:
ManagementObjectSearcher searcher = null;
searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject wmi_HD in searcher.Get())
{
HardDrive hd = new HardDrive();
try
{
txtmdl.Text = hd.Caption = wmi_HD["Caption"].ToString();
txtsn.Text=(hd.SerialNo = wmi_HD.GetPropertyValue("SerialNumber").ToString());
acabo de agregar 2 del cuadro de texto para obtener los resultados ,, se puede hacer lo mismo!
y la clase de disco duro:
public class HardDrive
{
public string Model { get; set; }
public string InterfaceType { get; set; }
public string Caption { get; set; }
public string SerialNo { get; set; }
}
No se olvide de usar:
using System.Management;
Cuestiones relacionadas
- 1. Obtener número de serie del disco duro
- 2. Obtener el número de serie de la unidad de disco duro Proporcionado por el fabricante a través de PHP
- 3. Cómo obtener una imagen de mshtml.htmlimg en el disco duro
- 4. ¿Cómo evitar la fragmentación del disco duro?
- 5. Obtener la temperatura del disco duro usando Python
- 6. Obtener el tamaño del clúster de un disco duro (a través del código)
- 7. ¿Cómo mover el repositorio git local de un disco duro a otro disco duro?
- 8. ¿Cómo obtener el número de serie de los discos duros de Mac?
- 9. ¿Cómo se lee la temperatura del disco duro?
- 10. Crear eventos para el disco duro leer y escribir
- 11. Ubicación del iPhone SDK en el disco duro
- 12. Recuperando el número de serie del dispositivo
- 13. Lectura de sectores de disco duro en C++ en Linux
- 14. Cómo obtener el número de serie del dispositivo USB en C#
- 15. ¿Cómo se puede evitar programáticamente Windows desde el disco duro?
- 16. ¿Cómo obtener el número de serie de los discos duros?
- 17. C++ Encontrar el mayor número en serie
- 18. Atmel UC3: cómo obtener el número de serie?
- 19. Emular un disco duro en Linux
- 20. Defrag un disco duro virtual (.vhd)?
- 21. ¿Cómo se detecta la letra principal del disco duro, como C: unidad?
- 22. ¿Cómo cambiar el tamaño de una imagen en C# a un cierto tamaño de disco duro?
- 23. ¿Cómo obtener información sobre el sistema de archivos del disco?
- 24. Cómo usar Content-disposition para forzar la descarga de un archivo en el disco duro?
- 25. ¿Cómo obtener tamaño de Ram y tamaño de disco duro con Java?
- 26. ¿Cómo detectar si una unidad específica es un disco duro?
- 27. ¿Cómo copiar imágenes a la tarjeta sd del emulador de Android desde el disco duro?
- 28. WMI HDD Número de serie transpuesto
- 29. Número de serie del dispositivo USB leído en C#
- 30. ¿Cómo simulo el rendimiento normal del disco duro en mi Mac basada en SSD?
Sí, estoy de acuerdo ... WMI. –
buena idea para mí –