Accueil > > > VIRTUALDRIVE - CLASSE DE CRÉATION NON PERSISTANTE ET SUPPRESSION DE LECTEUR VIRTUEL.
VIRTUALDRIVE - CLASSE DE CRÉATION NON PERSISTANTE ET SUPPRESSION DE LECTEUR VIRTUEL.
Information sur la source
Description
Cette classe permet la création non persistante et la suppression d'un lecteur virtuel. Celui-ci n'est pas conservé après le redémarrage du système, le nom est le même que le lecteur hébergeant le répertoire donné à la fonction de création. Le lecteur n'est pas référencé sous la clé : HKLM\System\MountedDevices. (cf. SetVolumeMountPoint) L'API employée est "DefineDosDevice". NOTA : le "path" indiqué est pris tel quel car j'emploie le flag "DDD_RAW_TARGET_PATH". Pour une conversion d'un "path" MS-DOS, ce flag ne doit pas être pris en compte... Emploi : VirtualDrive.Create('Z', @"C:\WINNT\System32"); Bonne utilisation.
Source
- using System;
- using System.IO;
- using System.Runtime.InteropServices;
-
- namespace AOGie
- {
- /// <summary>
- /// Création non persistante et suppression de lecteur virtuel.
- /// Ce lecteur devra donc être recréé après un redémarrage du système.
- /// Celui-ci n'est pas référencé sous la clé : HKLM\System\MountedDevices.
- ///
- /// AOGie - 30/06/2005.
- /// </summary>
- public class VirtualDrive
- {
- #region Win32
-
- private const int DDD_RAW_TARGET_PATH = 0x00000001;
- private const int DDD_REMOVE_DEFINITION = 0x00000002;
- private const int DDD_EXACT_MATCH_ON_REMOVE = 0x00000004;
-
- [DllImport("kernel32.dll", CharSet=CharSet.Auto)]
- private static extern bool DefineDosDevice(
- int dwFlags,
- string lpDeviceName,
- string lpTargetPath
- );
-
- private const int DRIVE_UNKNOWN = 0;
- private const int DRIVE_NO_ROOT_DIR = 1;
- private const int DRIVE_FIXED = 3;
-
- [DllImport("kernel32.dll", CharSet=CharSet.Auto)]
- private static extern int GetDriveType(
- string lpRootPathName
- );
-
- #endregion
-
-
- #region Méthodes publiques
-
- #region Create
- /// <summary>
- /// Création d'un lecteur virtuel non persistant.
- /// </summary>
- /// <param name="driveChar">Lettre à attribuer au lecteur.</param>
- /// <param name="path">Chemin d'accès au répertoire.</param>
- /// <returns>Succès ou échec de l'opération</returns>
- public static bool Create(char driveChar, string path)
- {
- return DDDOperation(driveChar, path, true);
- }
- #endregion
-
- #region Delete
- /// <summary>
- /// Suppression d'un lecteur virtuel non persistant.
- /// </summary>
- /// <param name="driveChar">Lettre attribuée au lecteur.</param>
- /// <param name="path">Chemin d'accès au répertoire.</param>
- /// <returns>Succès ou échec de l'opération</returns>
- public static bool Delete(char driveChar, string path)
- {
- return DDDOperation(driveChar, path, false);
- }
- #endregion
-
- #endregion
-
- #region Méthodes privées
-
- #region DDDOperation
- private static bool DDDOperation(char driveChar, string path, bool create)
- {
- //répertoire valide ?
- if (!Directory.Exists(path)) return false;
-
- string drive = string.Format("{0}:", driveChar.ToString().ToUpper());
- //le volume existe ?
- int type = GetDriveType(string.Format("{0}{1}", drive, Path.DirectorySeparatorChar));
- //Nota : un lecteur virtuel est de type DRIVE_FIXED une fois créé.
- if ((create && type != DRIVE_UNKNOWN && type != DRIVE_NO_ROOT_DIR) ||
- (!create && type != DRIVE_FIXED))
- return false;
-
- int flags = DDD_RAW_TARGET_PATH;
- if (!create) flags |= (DDD_REMOVE_DEFINITION | DDD_EXACT_MATCH_ON_REMOVE);
-
- return DefineDosDevice(
- flags,
- drive,
- string.Format("{0}??{0}{1}", Path.DirectorySeparatorChar, path)
- );
- }
- #endregion
-
- #endregion
- }
- }
using System;
using System.IO;
using System.Runtime.InteropServices;
namespace AOGie
{
/// <summary>
/// Création non persistante et suppression de lecteur virtuel.
/// Ce lecteur devra donc être recréé après un redémarrage du système.
/// Celui-ci n'est pas référencé sous la clé : HKLM\System\MountedDevices.
///
/// AOGie - 30/06/2005.
/// </summary>
public class VirtualDrive
{
#region Win32
private const int DDD_RAW_TARGET_PATH = 0x00000001;
private const int DDD_REMOVE_DEFINITION = 0x00000002;
private const int DDD_EXACT_MATCH_ON_REMOVE = 0x00000004;
[DllImport("kernel32.dll", CharSet=CharSet.Auto)]
private static extern bool DefineDosDevice(
int dwFlags,
string lpDeviceName,
string lpTargetPath
);
private const int DRIVE_UNKNOWN = 0;
private const int DRIVE_NO_ROOT_DIR = 1;
private const int DRIVE_FIXED = 3;
[DllImport("kernel32.dll", CharSet=CharSet.Auto)]
private static extern int GetDriveType(
string lpRootPathName
);
#endregion
#region Méthodes publiques
#region Create
/// <summary>
/// Création d'un lecteur virtuel non persistant.
/// </summary>
/// <param name="driveChar">Lettre à attribuer au lecteur.</param>
/// <param name="path">Chemin d'accès au répertoire.</param>
/// <returns>Succès ou échec de l'opération</returns>
public static bool Create(char driveChar, string path)
{
return DDDOperation(driveChar, path, true);
}
#endregion
#region Delete
/// <summary>
/// Suppression d'un lecteur virtuel non persistant.
/// </summary>
/// <param name="driveChar">Lettre attribuée au lecteur.</param>
/// <param name="path">Chemin d'accès au répertoire.</param>
/// <returns>Succès ou échec de l'opération</returns>
public static bool Delete(char driveChar, string path)
{
return DDDOperation(driveChar, path, false);
}
#endregion
#endregion
#region Méthodes privées
#region DDDOperation
private static bool DDDOperation(char driveChar, string path, bool create)
{
//répertoire valide ?
if (!Directory.Exists(path)) return false;
string drive = string.Format("{0}:", driveChar.ToString().ToUpper());
//le volume existe ?
int type = GetDriveType(string.Format("{0}{1}", drive, Path.DirectorySeparatorChar));
//Nota : un lecteur virtuel est de type DRIVE_FIXED une fois créé.
if ((create && type != DRIVE_UNKNOWN && type != DRIVE_NO_ROOT_DIR) ||
(!create && type != DRIVE_FIXED))
return false;
int flags = DDD_RAW_TARGET_PATH;
if (!create) flags |= (DDD_REMOVE_DEFINITION | DDD_EXACT_MATCH_ON_REMOVE);
return DefineDosDevice(
flags,
drive,
string.Format("{0}??{0}{1}", Path.DirectorySeparatorChar, path)
);
}
#endregion
#endregion
}
}
Historique
- 30 juin 2005 11:19:28 :
- Je m'étais trompé sur une annotation expliquant l'attribution du nom au lecteur virtuel... :)])
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Infos lecteur disque [ par Seb206 ]
Comment recuperer des infos sur un lecteur ?Nom du lecteur, type ( disquette, cd, disque dur ...).Avec les classes .net Directory et DirectoryInfo, j'
Type de lecteur / support [ par taharban ]
Comment reconnaitre le type d'un lecteur, "c:" par exemple ?Pour savoir s'il s'agit d'un disque dur, lecteur CD ou DVD, et même un un CD ou DVD dans l
Besoin d'aide pour lecteur video en C# [ par sof_fr ]
Bonjour à tous,Je ne vai pas vous bourrer le crane avec 10 000 lignes alors je serai rapide :)J'ai un projet à mener à bien, et je dois programmer une
Lecteur CD [ par Online ]
Bonjour je suis en train de coder une appli e je voudrais savoir comment faire pour lister UNIQUEMENT les lecteurs CD d'une machine dans une comboboxM
lecteur réseau [ par petitou ]
Bon voila mon problème, je récupère le chemin d'un répertoire qui se trouve sur un lecteur réseau donc le chemin que je récupère est du type "W:\monRe
Lancer une vidéo avec le lecteur par défaut [ par tiju50 ]
Bonjour, J'aimerais savoir comment on peut lancer une vidéo style divx en utilisant le lecteur par défaut sous n'importe quel OS. Déjà, est-ce que c'e
Mapper un lecteur Reseau [ par ChrisTof ]
Bonjour J'aimerai savoir comment faire pour mapper un lecteur réseau en C# sans utiliser : System.Diagnostics.Process.Start("net.exe",@"use b: \\s_ser
windows media player [ par godefrw ]
Bonjour,Je viens d'installer le service pack 2 sur mon ordi. Evidemment cela a mis à jour windows media player, et apparemment il ne faut plus coder d
Comment désactiver l'autostart d'un lecteur window media player? [ par godefrw ]
Bonjour, j'ai incorporé un lecteur windows media player dans mon application. J'a le service pack 2 et la mise à jour de windows media player. Je ch
Obtenir informations lecteur en c# !!! [ par paulien ]
Je recherche déséspérément comment obtenir les informations sur les lecteurs logiques presents dans l'ordinateur, dans un programme c# !!! je precise
|
Derniers Blogs
TECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYSTECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYS par ROMELARD Fabrice
Speakers : Lionel Limozin et Alain Marty La session commence par une découverte de SharePoint à travers la mise en place d'un environnement SharePoint pour la gestion des Sessions animées par BeWise. Le besoin est très ba...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0 par odewit
Je viens de publier la version 3.0 de Perspective pour Silverlight, qui regroupe un portage sous Silverlight 5.0 des fonctionnalités de Perspective 2.0, le framework 3D de haut-niveau introduit récemment et de nouveaux exemples de code. En voici la li...
Cliquez pour lire la suite de l'article par odewit TECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVERTECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVER par ROMELARD Fabrice
Speaker : Nadia Ben El Kadi Configuration machine La session commence par la toute première question à se poser lors de la mise en place d'environnement SQL Server, la configuration des machines : Type de mac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SITECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SI par ROMELARD Fabrice
Speakers : Fabrice Barbin, Samuel Blanchard, Julien Lo Presti Titre Prometteur et attractif invitant à voir comment lier le composant ludique Kinect dans le cadre d'une structure IT classique, notamment au travers de la plat...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOURTECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOUR par ROMELARD Fabrice
KeyNotes du premier jour pour les développeurs. La session est principalement axée sur une des principales directions prise par Microsoft à travers tous ses nouveaux produits : Cloud privé ou public (Solution Azure) ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|