|
auteur : cardi |
Grâce à la propriété OSVersion de la classe Environment, il est possible de connaître la version de l'OS qui exécute l'application :
switch (Environment. OSVersion. Platform)
{
case PlatformID. Win32NT:
if (Environment. OSVersion. Version. Major = = 5 )
{
if (Environment. OSVersion. Version. Minor = = 1 )
Console. WriteLine (" Windows XP " );
else if (Environment. OSVersion. Version. Minor = = 0 )
Console. WriteLine (" Windows 2000 " );
else
Console. WriteLine (" Windows ??? " );
}
else
Console. WriteLine (" Windows NT " );
break ;
case PlatformID. Win32Windows:
Console. WriteLine (" Windows 98 ou Me " );
break ;
case PlatformID. WinCE:
Console. WriteLine (" Windows Mobile " );
break ;
case PlatformID. Unix:
Console. WriteLine (" Windows Unix " );
break ;
default :
Console. WriteLine (" Autre... " );
break ;
}
|
|
lien : System.Environment.OSVersion (MSDN)
|
|
auteur : cardi |
On utilise la propriété ProcessorCount de la classe System.Environment :
int countProc = Environment. ProcessorCount;
Console. WriteLine (" Nombre processeurs = {0} " , countProc);
|
|
lien : System.Environment (MSDN)
|
|
auteur : cardi |
On utilise la propriété BootMode de la classe SystemInformation. On obtient une des valeurs de l'énumération BootMode : FailSafe, FaileSafeWithNetwork ou Normal.
switch (SystemInformation. BootMode)
{
case BootMode. Normal: Console. WriteLine (" Tout est ok ! " ); break ;
case BootMode. FailSafe: Console. WriteLine (" Attention, on est en mode sans echec ! " ); break ;
case BootMode. FailSafeWithNetwork: Console. WriteLine (" Attention, on est en mode sans échec mais on a accès au réseau ! " ); break ;
}
|
|
lien : System.Windows.Forms.SystemInformation (MSDN)
|
|
auteur : abelman |
On utilise la propriété SystemDirectory de la classe Environment
Console. WriteLine (" Répertoire système = {0} " , Environment. SystemDirectory);
|
|
lien : System.Environment (MSDN)
|
|
auteur : abelman |
On utilise la fonction GetFolderPath de la classe Environment avec l'énumération Environment.SpecialFolder
static void PrintSpecFolder ()
{
Console. WriteLine (" Répertoire spéciaux " );
Environment. SpecialFolder[ ] sfe = (Environment. SpecialFolder[ ] )
Enum. GetValues (typeof (Environment. SpecialFolder));
for (int i = 0 ; i < sfe. Length; i+ + )
Console. WriteLine (Environment. GetFolderPath (sfe[ i] ));
}
|
|
lien : System.Environment (MSDN)
|
|
auteur : cardi |
On utilisera la méthode IsInRole de la classe WindowsPrincipal afin de déterminer si l'utilisateur courant fait bien partie ou pas d'un groupe x du domaine auquel il est rattaché :
WindowsPrincipal wp = new WindowsPrincipal (WindowsIdentity. GetCurrent ());
if (wp. IsInRole (" Developpez\\Moderateur " ) = = true )
Console. WriteLine (" L'utilisateur fait bien partie du groupe Developpez\\Moderateur " );
else
Console. WriteLine (" L'utilisateur ne fait pas partie du groupe Developpez\\Moderateur " );
|
|
lien : System.Security.Principal.WindowsPrincipal (MSDN)
|
|
auteur : cardi |
On utilise la propriété MachineName de la classe System.Environment :
string MachineName = Environment. MachineName;
Console. WriteLine (" Nom de la machine = {0} " , MachineName);
|
|
lien : System.Environment (MSDN)
|
|
auteur : abelman |
On utilise la propriété UserName de la classe Environment
Console. WriteLine (" Nom utilisateur = {0} " , Environment. UserName);
|
|
lien : System.Environment (MSDN)
|
|
auteur : abelman |
On utilise la propriété WorkingSet de la classe Environment
Console. WriteLine (" Mémoire allouée au process en cours = {0} octets " ,
Environment. WorkingSet);
|
|
lien : System.Environment (MSDN)
|
|
auteur : abelman |
On utilise la fonction GetLogicalDrives de la classe Environment
static void PrintLogicalDrives ()
{
Console. WriteLine (" Lecteurs logiques " );
string [ ] drives = Environment. GetLogicalDrives ();
for (int i = 0 ; i < drives. Length; i+ + )
Console. WriteLine (drives[ i] );
}
|
|
lien : System.Environment (MSDN)
|
|
auteur : cardi |
La classe DriveInfo peut nous donner les informations nécessaires afin de calculer le pourcentage d'espace libre de chaque disque dur :
foreach (DriveInfo CurrentDrive in DriveInfo. GetDrives ())
{
if (CurrentDrive. DriveType = = DriveType. Fixed)
{
Double pourcentageLibre = ((Double)CurrentDrive. AvailableFreeSpace / CurrentDrive. TotalSize) * 100 ;
Console. WriteLine (" Espace libre de {0} >> {1}% " , CurrentDrive. Name, Convert. ToInt16 (pourcentageLibre));
}
}
|
|
lien : System.IO.DriveInfo (MSDN)
|
|
auteurs : cardi, tomlev |
La classe DriveInfo possède la propriété VolumeLabel en lecture et écriture afin de modifier le nom du disque dur en question :
DriveInfo monDrive = new DriveInfo (@" C:\ " );
monDrive. VolumeLabel = " Mon Drive " ;
|
Attention, cette opération requiert les privilèges d'administrateur. Si l'application s'exécute sous Windows Vista ou Seven sans les privilèges d'administrateur,
cette opération lèvera une exception.
|
|
auteur : cardi |
On utilise la classe DriveInfo qui fournit des informations concernant entre autres des informations concernant les lecteurs CD/DVD :
String monDrive = " D:/ " ;
try
{
DriveInfo monDriveInfo = new DriveInfo (monDrive);
if (monDriveInfo. DriveType = = DriveType. CDRom)
{
if (monDriveInfo. IsReady = = true )
{
Console. WriteLine (" Lecteur identifié avec CD : {0} " , monDriveInfo. VolumeLabel);
}
else
{
Console. WriteLine (" Lecteur identifié sans CD : {0} " , monDriveInfo. Name);
}
}
else
{
Console. WriteLine (" Ce lecteur n'est pas un lecteur CD/DVD ! " );
}
}
catch (Exception)
{
Console. WriteLine (" Ceci n'est pas un lecteur ! " );
}
|
|
|
auteurs : Merlin, tomlev |
Pour obtenir des informations détaillées sur un disque, il faut utiliser WMI (Windows Management Instrumentation).
Il faudra tout d'abord ajouter une référence à l'assembly System.Management. Pour récupérer une valeur, il faudra utiliser la méthode GetPropertyValue associée à un nom de propriété.
L'exemple suivant commence par lister toutes les propriétés existantes puis récupère la valeur de la propriété VolumeSerialNumber.
using System. Management;
. . .
ManagementObject disque = new ManagementObject (" win32_logicaldisk.deviceid=\"c:\" " );
disque. Get ();
string strProp = " " ;
foreach (PropertyData d in disque. Properties)
{
strProp + = string . Format (" {0} : {1}\n " , d. Name, disque. GetPropertyValue (d. Name));
}
MessageBox. Show (strProp);
strProp = disque. GetPropertyValue (" VolumeSerialNumber " ). ToString ();
MessageBox. Show (" n° série volume : " + strProp);
|
|
|
auteurs : fayoul, cardi |
La commande defrag c: -a permet de lancer l'analyse sur le disque dur C. Il suffit donc d'exécuter cette commande avec la classe Process et de récupérer la sortie standard.
Process p = null ;
try
{
p = new Process ();
p. StartInfo. UseShellExecute = false ;
p. StartInfo. RedirectStandardOutput = true ;
p. StartInfo. FileName = " defrag " ;
p. StartInfo. Arguments = " c: -a " ;
p. Start ();
if (p. WaitForExit (60 * 1000 ))
{
MessageBox. Show (p. StandardOutput. ReadToEnd (), " StandardOutput " );
p. Dispose ();
p = null ;
}
}
catch (Exception exc)
{
MessageBox. Show (exc. Message, " Exception " );
}
finally
{
if (p ! = null )
{
if (p. HasExited)
p. Kill ();
p. Dispose ();
p = null ;
}
}
|
|
|
auteur : smyley |
Il faut rajouter dans les usings
et voici le code :
public string AGetExtentionDescription (string ext)
{
string description = GetExtentionDescription (ext);
if (description = = null | | description = = " " )
return String. Format (" Fichier {0} " , ext);
else
return description;
}
public string GetExtentionDescription (string ext)
{
if (ext = = null | | ext = = " " | | ext = = " . " )
return null ;
string description = " " ;
try
{
RegistryKey keyDesc = Registry. ClassesRoot. OpenSubKey (ext, false );
if (keyDesc = = null )
return null ;
else
{
try
{
if (keyDesc. GetValueKind (" " ) ! = RegistryValueKind. String)
return null ;
else
{
description = keyDesc. GetValue (" " ) as string ;
if (description = = null | | description = = " " )
return null ;
RegistryKey optionnalRedirection = Registry. ClassesRoot. OpenSubKey (description, false );
if (optionnalRedirection = = null )
return description;
else
{
try
{
if (optionnalRedirection. GetValueKind (" " ) ! = RegistryValueKind. String)
return description;
else
return optionnalRedirection. GetValue (" " ) as string ;
}
finally
{
if (optionnalRedirection ! = null )
optionnalRedirection. Close ();
}
}
}
}
finally
{
if (keyDesc ! = null )
keyDesc. Close ();
}
}
}
catch
{
return null ;
}
}
private void button1_Click (object sender, EventArgs e)
{
MessageBox. Show (AGetExtentionDescription (" .exe " ));
MessageBox. Show (AGetExtentionDescription (" .jpg " ));
MessageBox. Show (AGetExtentionDescription (" .dat " ));
MessageBox. Show (AGetExtentionDescription (" .iso " ));
MessageBox. Show (AGetExtentionDescription (" .bmp " ));
}
|
|
|
auteurs : abelman, freegreg |
Pour lancer un processus depuis notre application, on utilise la classe System.Diagnostics.Process
Exemple : lancer une instance de internet explorer qui ouvre www.developpez.com
void StartProcess ()
{
System. Diagnostics. Process proc = new System. Diagnostics. Process ();
proc. StartInfo. FileName = " iexplore.exe " ;
proc. StartInfo. Arguments = " http://www.developpez.com " ;
proc. Start ();
proc. Close ();
}
|
|
lien : System.Diagnostics.Process (MSDN)
|
|
auteur : abelman |
On peut ouvrir des documents dont l'extension est connue du shell windows comme les .txt ou les .doc avec
la classe System.Diagnostics.Process
Exemple : Ouverture d'un fichier texte .txt.
void StartProcess ()
{
System. Diagnostics. Process proc = new System. Diagnostics. Process ();
proc. StartInfo. FileName = " monfichier.txt " ;
proc. Start ();
proc. Close ();
}
|
|
lien : System.Diagnostics.Process (MSDN)
|
|
auteurs : abelman, tomlev |
Il est possible de rediriger la sortie standard d'un processus pour effectuer un traitement dessus où l'afficher. Il faut
pour cela utiliser la propriété RedirectStandardOutput.
static void RedirectStdOutput ()
{
System. Diagnostics. Process proc = new System. Diagnostics. Process ();
proc. StartInfo. UseShellExecute = false ;
proc. StartInfo. RedirectStandardOutput = true ;
proc. StartInfo. FileName = " mem.exe " ;
proc. Start ();
string output = proc. StandardOutput. ReadToEnd ();
Console. WriteLine (output);
proc. WaitForExit ();
proc. Close ();
}
|
|
lien : System.Diagnostics.Process (MSDN)
|
|
auteur : abelman |
Pour lister les processus en cours on utilise la fonction
using System. Diagnostics;
Process[ ] prc = Process. GetProcesses ();
Process[ ] prc = Process. GetProcessesByName (" notepad " );
|
|
lien : System.Diagnostics.Process (MSDN)
|
|
auteur : abelman |
Pour arrêter un processus, il faut disposer d'un objet System.Diagnostics.Process qui représente le processus.
proc. Kill ();
proc. Close ();
|
Pour les applications WinForm il est préférable d'utiliser CloseMainWindow afin que l'application
reçoive le message de fermeture et se ferme correctement.
proc. CloseMainWindow ();
proc. Close ();
|
|
lien : System.Diagnostics.Process (MSDN)
|
|
auteurs : neguib, neo.51, tomlev |
Tout simplement en utilisant les fonctionnalités offertes par l'espace de noms System.Diagnostics, notamment la classe EventLog et sa méthode WriteEntry qui dispose d'une dizaine de surcharges.
Il faut tout d'abord créer une instance de EventLog, et la source d'évènement associée si elle n'existe pas :
using System. Diagnostics;
. . .
if (! EventLog. SourceExists (" MaSource " ))
{
EventLog. CreateEventSource (" MaSource " , " MonJournal " );
}
EventLog monJournal = new EventLog ();
monJournal. Source = " MaSource " ;
|
Notez que la méthode CreateEventSource requiert les privilèges d'administrateur, il est donc préférable de créer le source d'évènement lors de l'installation.
On peut ensuite utiliser notre EventLog pour logger une exception, par exemple :
try
{
}
catch (Exception ex)
{
monJournal. WriteEntry (ex. Message, EventLogEntryType. Error);
}
|
|
lien : System.Diagnostics.EventLog (MSDN)
lien : Méthode EventLog.WriteEntry (MSDN)
lien : System.Diagnostics.EventLogEntryType (MSDN)
|
|
auteur : cardi |
Pour émettre un bip avec le haut-parleur de la machine, il suffit d'utiliser la méthode Beep de la classe Console :
Console. Beep ();
Console. Beep (15000 , 2000 );
|
|
|
auteur : Laurent Dardenne |
WMI est utilisé pour accomplir différentes tâches d'administration système au travers de scripts ou requêtes WQL.
L'outil WMICodeCreator permet de générer le code source pour :
- l'accès à une classe WMI ou à une de ses propriétés ;
- l'exécution de méthodes d'une classe WMI ;
- la réception d'évènements synchrones ou asynchrones issus d'un provider WMI.
Cet outil permet également de récupérer les détails d'une classe WMI : la liste des propriétés, méthodes et qualificateurs et pour certaines une description succincte de la classe.
Le code source généré peut l'être pour les langages C#, VB .NET ou encore VBScript.
Sous .NET reportez-vous aux espaces de noms System.Management et System.Management.Instrumentation.
|
Consultez les autres F.A.Q's


Les sources présentées sur cette page sont libres de droits
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une œuvre intellectuelle protégée par les droits d'auteur.
Copyright © 2010 Developpez Developpez LLC.
Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne
peut être faite de ce site ni de l'ensemble de son contenu : textes, documents
et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez
selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.