ドライブが自動実行されるメディアタイプを取得するサンプルコードです。
using System; using System.Linq; using System.Runtime.InteropServices; using System.Security; namespace ConsoleApplication1 { [SecurityCritical] class Program { [SuppressUnmanagedCodeSecurity] private static class NativeMethods { [DllImport("shell32.dll", CharSet = CharSet.Unicode, PreserveSig = false)] public static extern AutoRunContentType SHGetDriveMedia(string pszDrive); } [Flags] public enum AutoRunContentType : int { AutoRunINF = 0x2, AudioCD = 0x4, DVDMovie = 0x8, BlankCD = 0x10, BlankDVD = 0x20, UnknownContent = 0x40, Picture = 0x80, Music = 0x100, Video = 0x200, VideoCD = 0x400, SuperVideoCD = 0x800, DVDAudioMedia = 0x1000, BlankBlurayDisc = 0x2000, BlurayDisc = 0x4000, CameraStorage = 0x8000, CustomEvent = 0x10000, None = 0x0, Mask = 0x1FFFE, PhaseUnknown = 0x0, PhasePresniff = 0x10000000, PhaseSniffing = 0x20000000, PhaseFinal = 0x40000000, PhaseMask = 0x70000000, } static void Main() { foreach (char letter in Enumerable.Range('a', 'z' - 'a' + 1)) { var path = letter + ":\\"; try { // ドライブメディアの種類を取得します。 var driveMediaType = NativeMethods.SHGetDriveMedia(path); Console.WriteLine("{0} - {1}", path, driveMediaType.ToString()); } catch (Exception e) { Console.WriteLine("{0} - {1}", path, e.Message); } } Console.WriteLine("PRESS ANY KEY."); Console.ReadKey(); } } }
2021/3/10:この記事は別のブログで投稿した記事を移動したものです。