|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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
Sources en rapport avec celle ci
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
|
Téléchargements
Logiciels à télécharger sur le même thème :
|