UTILISATION WMI ET WIN32_LOGICALDISK

scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017 - 9 mars 2007 à 00:16
cs_oualido Messages postés 1 Date d'inscription samedi 8 octobre 2005 Statut Membre Dernière intervention 19 juin 2007 - 19 juin 2007 à 09:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41295-utilisation-wmi-et-win32-logicaldisk

cs_oualido Messages postés 1 Date d'inscription samedi 8 octobre 2005 Statut Membre Dernière intervention 19 juin 2007
19 juin 2007 à 09:24
Merci,

c'est intéressant , par contre

avez vous une idée sur comment on peut faire pour modifier un objet via WMI, sachant que Wql est un langage lecture seule.

merci
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
20 mars 2007 à 19:42
Autre remarque, DriveInfo renvoie la description en anglais alros que WMI le localise dans la langue de l'OS.
De plus, il manque pas mal d'info à mon goût (dans le cas qui me concerne).

Donc (et à moins d'avoir loupé quelque chose), je vais garder mon exemple (en corrigeant l'erreur) même s'il y a plus de code.

Le débat est ouvert
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
20 mars 2007 à 19:31
je précise juste que DriveInfo c'est en .NET 2.0

voici le lien Krosoft :
http://msdn2.microsoft.com/en-us/library/system.io.driveinfo.aspx
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
11 mars 2007 à 14:15
Argh, pourtant j'ai horreur de réinventer la poudre ;p

Merci pour l'oubli
et re merci pour le wrapper DriveInfo ;p
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
11 mars 2007 à 10:46
Avec la classe DriveInfo() c'est pas plus simple ?
De plus tu oublis de libérer tes objets de management (.Dispose())

++ Bonne continuation
scoubidou944 Messages postés 714 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 19 janvier 2017
9 mars 2007 à 00:16
hum, je dirais que c'est un peu codé à la 'porcasse'.
Pour être un peu constructif quand même histoire de dire que la critique est facile, voici un bout de code qui affiche dans une listview toutes les unités logiques d'un disque ainsi que tous les attributs associés.

Le code est issu d'une appli' que je suis en train de faire, il faut juste remplacer m_listViewDrives par le nom de sa listview. (je le redis c en cours de dev ;p)

private void FillIHM()
{
ManagementScope mscope = new ManagementScope(string.Format(@"\\{0}\root\cimv2", Environment.MachineName));
ManagementObjectSearcher mos = new ManagementObjectSearcher(mscope, new ObjectQuery("SELECT * FROM Win32_LogicalDisk"));

// Loop on each logical drive
foreach (ManagementObject mo in mos.Get())
{
// Create item in listview for each logical drive
ListViewItem CurrentItem = m_listViewDrives.Items.Add("A");

// Loop on all properties (some of those may be unaccessible so check for each logical drive)
int PropertiesCount = mo.Properties.Count;
foreach (PropertyData pd in mo.Properties)
{
// Property available ?
if (mo[pd.Name] != null)
{
PropertyData CurrentObjet = mo.Properties[pd.Name];
if (CurrentObjet.Value != null)
{
// Create column for new property
ColumnHeader CurrentColumn = m_listViewDrives.Columns[pd.Name];
if (CurrentColumn == null)
{
CurrentColumn = m_listViewDrives.Columns.Add(pd.Name, -2, HorizontalAlignment.Left);
CurrentColumn.Name = pd.Name;
}

// Make a blank lin
int iCurrentColumnsCount = m_listViewDrives.Columns.Count;
for (int i = 1; i < iCurrentColumnsCount; i++)
{
CurrentItem.SubItems.Add(" ");
}

// Replace text
CurrentItem.SubItems[CurrentColumn.Index].Text = mo.Properties[pd.Name].Value.ToString();
}
}
}
}
mos.Dispose();
}
Rejoignez-nous