সংযুক্ত ইউএসবি ডিভাইসের তালিকা পান


93

উইন্ডোজ কম্পিউটারে সংযুক্ত সমস্ত ইউএসবি ডিভাইসের একটি তালিকা আমি কীভাবে পেতে পারি?

উত্তর:


123

আপনার প্রকল্পের ব্যবস্থাপনার জন্য একটি রেফারেন্স যুক্ত করুন then

namespace ConsoleApplication1
{
  using System;
  using System.Collections.Generic;
  using System.Management; // need to add System.Management to your project references.

  class Program
  {
    static void Main(string[] args)
    {
      var usbDevices = GetUSBDevices();

      foreach (var usbDevice in usbDevices)
      {
        Console.WriteLine("Device ID: {0}, PNP Device ID: {1}, Description: {2}",
            usbDevice.DeviceID, usbDevice.PnpDeviceID, usbDevice.Description);
      }

      Console.Read();
    }

    static List<USBDeviceInfo> GetUSBDevices()
    {
      List<USBDeviceInfo> devices = new List<USBDeviceInfo>();

      ManagementObjectCollection collection;
      using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_USBHub"))
        collection = searcher.Get();      

      foreach (var device in collection)
      {
        devices.Add(new USBDeviceInfo(
        (string)device.GetPropertyValue("DeviceID"),
        (string)device.GetPropertyValue("PNPDeviceID"),
        (string)device.GetPropertyValue("Description")
        ));
      }

      collection.Dispose();
      return devices;
    }
  }

  class USBDeviceInfo
  {
    public USBDeviceInfo(string deviceID, string pnpDeviceID, string description)
    {
      this.DeviceID = deviceID;
      this.PnpDeviceID = pnpDeviceID;
      this.Description = description;
    }
    public string DeviceID { get; private set; }
    public string PnpDeviceID { get; private set; }
    public string Description { get; private set; }
  }
}

14
ডিভাইসের বন্ধুত্বপূর্ণ নামটিও পুনরুদ্ধার করার কোনও উপায় আছে? উদাহরণস্বরূপ যখন আমি আমার ইউএসবি স্টিকের বৈশিষ্ট্যগুলিতে যাই তখন আমি "কিংস্টন ডেটা ট্র্যাভেলার 2.0 ইউএসবি ডিভাইস" দেখতে পাই।
রবার্ট

4
ডিভাইসআইডি এবং পিএনপিডিভাইসআইডি এর মধ্যে পার্থক্য কী?
শিমি ওয়েটজ্যান্ডলার

4
আমি যখন উপরের প্রোগ্রামটি চালনা করি তখন আমি আমার ইউএসবি হার্ড ডিস্কগুলি, আমার কীবোর্ড এবং মাউস পাই, তবে আমি আমার ইউএসবি ক্যামেরা, আমার ইউএসবি এ / ডি পাই না। আমার সমস্ত ইউএসবি ডিভাইস কেন প্রদর্শিত হচ্ছে না?
কর্ট

8
সমস্ত ইউএসবি ডিভাইসের তালিকা পাওয়ার জন্য এটি "Win32_USBC নিয়ন্ত্রণকারী ডিভাইস" অনুসন্ধান করা উচিত এবং "Win32_USBHub" নয়। তারপরে ডিভাইসের ঠিকানার স্ট্রিং পেতে "নির্ভরশীল" বৈশিষ্ট্যটি ব্যবহার করুন।
নেডকো

4
@ পিপমকিনে Win32_USBHubকেবল ইউএসবি হাবগুলি অন্তর্ভুক্ত রয়েছে, সমস্ত ডিভাইস নয়, তাই আপনি কিছু ডিভাইস মিস করছেন। @nedko ঠিক আছে যে আপনাকে Win32_USBControllerDeviceসমস্ত ডিভাইস পাওয়ার জন্য নির্ভরশীল সম্পত্তি পেতে হবে।
ড্যানিয়েল উইদিস

45

আমি জানি আমি একটি পুরানো প্রশ্নের জবাব দিচ্ছি, তবে আমি কেবল এই একই অনুশীলনের মধ্য দিয়ে গিয়েছিলাম এবং আরও কিছু তথ্য সন্ধান করেছি, যা আমার মনে হয় যে আলোচনায় অনেক অবদান রাখবে এবং এই প্রশ্নটি খুঁজে পেয়ে অন্য যে কেউ এই প্রশ্নটি খুঁজে বের করবে এবং কোথায় দেখবে বিদ্যমান উত্তরগুলি কম পড়ে fall

গৃহীত উত্তর পাসে, এবং ব্যবহার সংশোধন করা যায় Nedko এর মন্তব্য এটি। জড়িত ডাব্লুএমআই ক্লাসগুলির আরও বিশদ বোঝার ফলে ছবিটি সম্পূর্ণ করতে সহায়তা করে।

Win32_USBHubকেবল ইউএসবি হাব ফেরত দেয় । এটি অন্ধকারে সুস্পষ্ট বলে মনে হয় তবে উপরের আলোচনাটি এটি মিস করে। এটিতে সমস্ত সম্ভাব্য ইউএসবি ডিভাইস অন্তর্ভুক্ত নয়, কেবলমাত্র সেগুলি (তাত্ত্বিকভাবে, কমপক্ষে) অতিরিক্ত ডিভাইসের হাব হিসাবে কাজ করতে পারে। এটি এমন কিছু ডিভাইস মিস করে যা হাব নয় (বিশেষত যৌগিক ডিভাইসের অংশ)।

Win32_PnPEntityএতে সমস্ত ইউএসবি ডিভাইস এবং আরও কয়েক'শ নন- ইউএসবি ডিভাইস অন্তর্ভুক্ত রয়েছে। তালিকাটি ফিল্টার করতে "ইউএসবি%" দিয়ে কোনও ডিভাইসআইডি অনুসন্ধানের জন্য যেখানে একটি ডিভাইসআইডি অনুসন্ধানের জন্য রসেল গ্যান্টম্যানের পরামর্শটি Win32_PnPEntityসহায়ক তবে কিছুটা অসম্পূর্ণ; এটি ব্লুটুথ ডিভাইস, কিছু মুদ্রক / মুদ্রণ সার্ভার এবং এইচআইডি-সম্মতিযুক্ত ইঁদুর এবং কিবোর্ডকে মিস করে। আমি "ইউএসবি \%", "ইউএসবিএসটিআর%" "," ইউএসবিপিআরিন্ট \% "," বিটিএইচ \% "," এসডাব্লুডি \% ", এবং" লুকানো \% "দেখেছি। Win32_PnPEntityতবে, আপনি অন্য উত্স থেকে পিএনপি ডিভাইসআইডি-র অধিকারে থাকলে তথ্য সন্ধান করার জন্য একটি ভাল "মাস্টার" রেফারেন্স।

আমি যা খুঁজে পেয়েছি তা হল ইউএসবি ডিভাইসগুলি গণনার সর্বোত্তম উপায় ছিল কোয়েরি Win32_USBControllerDevice। যদিও এটি ডিভাইসগুলির জন্য বিশদ তথ্য দেয় না, এটি আপনার ইউএসবি ডিভাইসগুলিকে সম্পূর্ণরূপে গণনা করে এবং আপনার PNPDeviceIDপ্রতিটি ইউএসবি ডিভাইসের (হাবস, নন-হাব ডিভাইস এবং এইচআইডি-কমপ্লায়েন্ট ডিভাইস সহ) আপনাকে একটি পূর্বসূরি / নির্ভরশীল জুড়ি দেয় your পদ্ধতি. ক্যোয়ারী থেকে ফিরে আসা প্রতিটি নির্ভরশীল একটি ইউএসবি ডিভাইস হবে। পূর্ববর্তীটি যে কন্ট্রোলারকে অর্পণ করা হবে সেটিকে ইউএসবি কন্ট্রোলারের মধ্যে কেউ জিজ্ঞাসাবাদ করে ফিরে আসবে Win32_USBController

বোনাস হিসাবে, এটি প্রদর্শিত হয় যে ডাবের অধীনে ডাব্লুএমআই কোয়েরিটির প্রতিক্রিয়া জানাতে ডিভাইস ট্রিটি নিয়ে চলেছে Win32_USBControllerDevice, সুতরাং এই ফলাফলগুলি যে ক্রমতে ফিরে আসে তা পিতামাতার / সন্তানের সম্পর্কগুলি সনাক্ত করতে সহায়তা করতে পারে। (এই নথিভুক্ত করা না এবং এর ফলে শুধুমাত্র একটি অনুমান করা হয়; SetupDi এপিআই এর ব্যবহার CM_Get_Parent (অথবা শিশু + + সমরূপ । নির্ধারক ফলাফলের জন্য)) SetupDi এপিআই করার জন্য একটি বিকল্প হিসেবে, এটা মনে হয় যে তালিকাভুক্ত সকল ডিভাইসের জন্য অধীনে Win32_USBHubতারা তাকিয়ে যাবে রেজিস্ট্রিতে (এ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ + PNPDeviceID) এবং এতে একটি প্যারামিটার থাকবে ParentIdPrefixযা তার বাচ্চাদের পিএনপি ডেভিসআইআইডি-তে সর্বশেষ ক্ষেত্রের উপসর্গ হবে, সুতরাং Win32_PnPEntityকোয়েরি ফিল্টার করার জন্য এটি একটি ওয়াইল্ডকার্ড ম্যাচেও ব্যবহার করা যেতে পারে ।

আমার আবেদনে, আমি নিম্নলিখিতগুলি করেছি:

  • (Al Win32_PnPEntityচ্ছিক) পরবর্তী পুনরুদ্ধারের জন্য ফলাফলগুলি কী-মানচিত্রে (পিএনপি ডেভিসিসিড সহ) কী-মানচিত্রে সংরক্ষণ করা হয়েছে। আপনি যদি পরে ব্যক্তিগত জিজ্ঞাসা করতে চান তবে এটি alচ্ছিক।
  • Win32_USBControllerDeviceআমার সিস্টেমে (সমস্ত নির্ভরশীল) ইউএসবি ডিভাইসের একটি সুনির্দিষ্ট তালিকার জন্য জিজ্ঞাসা করা হয়েছে এবং এরগুলির পিএনপি ডেভিসিসআইডিগুলি বের করা হয়েছে। ডিভাইস ট্রি অনুসরণ করার আদেশের ভিত্তিতে আমি আরও এগিয়ে গিয়েছিলাম, ডিভাইসগুলি রুট হাবের জন্য নির্ধারিত করতে (প্রথম ডিভাইসটি নিয়ন্ত্রকের পরিবর্তে ফিরে আসে) এবং প্যারেন্টআইডপ্রিফিক্সের ভিত্তিতে একটি গাছ তৈরি করেছি built ক্রমটি যে ক্রমটি ফিরে আসে, সেটি সেটআপডির মাধ্যমে ডিভাইস ট্রি গণনার সাথে মিলে যায়, এটি প্রতিটি রুট হাব (যার জন্য পূর্ববর্তী নিয়ন্ত্রক চিহ্নিত করে), তারপরে এটির অধীনে ডিভাইসগুলির পুনরাবৃত্তি ঘটে, যেমন: আমার সিস্টেমে:
    • প্রথম নিয়ামকের রুট হাব
    • দ্বিতীয় নিয়ামকের রুট হাব
      • দ্বিতীয় কন্ট্রোলারের রুট হাবের অধীনে প্রথম হাব (প্যারেন্টআইডিপ্রেফিক্স রয়েছে)
        • দ্বিতীয় কন্ট্রোলারের রুট হাবের অধীনে প্রথম হাবের অধীনে প্রথম যৌগিক ডিভাইস (পিএনপিডেসিসআইডি হাবের প্যারেন্টাল্ডপ্রিফিক্সের উপরে মেলে; তার নিজস্ব প্যারেন্টআইডিপ্রেসিক্স রয়েছে)
          • সম্মিলিত ডিভাইসের এইচআইডি ডিভাইস অংশ (পিএনপিডিভিসেইড সংমিশ্রণ ডিভাইসের প্যারেন্টআইডি প্রিফিক্সের উপরে মেলে)
        • দ্বিতীয় কন্ট্রোলারের রুট হাবের অধীনে প্রথম হাবের নীচে দ্বিতীয় ডিভাইস
          • সম্মিলিত ডিভাইসের অংশ HID ডিভাইস
      • দ্বিতীয় নিয়ামকের রুট হাবের অধীনে দ্বিতীয় হাব
        • দ্বিতীয় কন্ট্রোলারের রুট হাবের অধীনে দ্বিতীয় হাবের নীচে প্রথম ডিভাইস
      • দ্বিতীয় নিয়ামকের রুট হাবের অধীনে তৃতীয় হাব
      • ইত্যাদি
  • জিজ্ঞাসা করা হয়েছে Win32_USBController। এটি আমাকে আমার নিয়ন্ত্রকদের পিএনপি ডিভাইসআইডিগুলির বিশদ তথ্য দেয় যা ডিভাইস গাছের শীর্ষে রয়েছে (যা পূর্ববর্তী ক্যোয়ারীর পূর্ববর্তী ছিল)। পূর্ববর্তী পদক্ষেপে উত্পন্ন গাছটি ব্যবহার করে, তার বাচ্চাদের (মূল কেন্দ্রগুলি) এবং তাদের শিশুদের (অন্যান্য হাবগুলি) এবং তাদের শিশুদের (নন-হাব ডিভাইস এবং সংমিশ্রিত ডিভাইস) এবং তাদের শিশু ইত্যাদির উপর পুনরাবৃত্তভাবে পুনরাবৃত্তি করা
    • প্রথম ধাপে সঞ্চিত মানচিত্রটি উল্লেখ করে আমার গাছের প্রতিটি ডিভাইসের জন্য বিশদ পুনরুদ্ধার করে। ( Win32_PnPEntityPtionচ্ছিকভাবে , কেউ প্রথম পদক্ষেপটি এড়িয়ে যেতে পারে এবং এই পদক্ষেপে তথ্য পেতে পিএনপি ডিভাইসআইডি ব্যবহার করে স্বতন্ত্রভাবে জিজ্ঞাসা করতে পারে ; সম্ভবত কোন সিপিইউ বনাম মেমরি ট্রেডঅফ কোন আদেশটি আরও ভাল তা নির্ধারণ করে))

সংক্ষেপে, Win32USBControllerDeviceনির্ভরশীলরা হ'ল একটি সিস্টেমে ইউএসবি ডিভাইসগুলির একটি সম্পূর্ণ তালিকা (নিজেরাই নিয়ন্ত্রণকারীরা, যা একই ক্যোয়ারির পূর্বসূরী), এবং PNPDeviceIdরেজিস্ট্রি এবং উল্লিখিত অন্যান্য প্রশ্নগুলির তথ্য সহ এই জোড়গুলিকে ক্রস-রেফারেন্স করে , একটি বিস্তারিত ছবি নির্মিত যেতে পারে।


যদি কারও সাথে 4 টি অভিন্ন স্ক্যানার সংযুক্ত থাকে, তবে আপনি 4 টি অপারেশনে উদাহরণস্বরূপ ব্যবহৃত হলে কোনটি আলাদা করবেন?
টপশট

4
@ টপশট পিএনপি ডিভাইসআইডি যতক্ষণ না এটি সংযুক্ত থাকে ততক্ষণ অনন্য। আপনি যদি কোনওটি সংযোগ বিচ্ছিন্ন করে দিয়েছিলেন এবং পরে কোনও দ্বিতীয় অভিন্নটিকে সংযুক্ত করেছেন কিনা তা বলার উপায় নেই। আশা করা যায় যে কোন অপারেশন ব্যবহৃত হয়েছে তা সনাক্ত করতে এই আইডিটি অন্যান্য ক্ষেত্রেও ক্রস-রেফারেন্স করা হয়।
ড্যানিয়েল উইডিস

4
ডিভাইসগুলি যদি অন্তর্নির্মিত সিরিয়াল নম্বরগুলি থাকে তবে ডিভাইসগুলি পৃথক করা যেতে পারে (এটি সিরিয়াল নম্বরগুলির উদ্দেশ্য)। ক্রমিক নম্বরটি পিএনপি "ইনস্ট্যান্স আইডি" হিসাবে ব্যবহৃত হয়। যদি ডিভাইসে কোনও ক্রমিক নম্বর না থাকে, তবে উদাহরণ আইডিটি মূলত ডিভাইস গাছের মধ্য দিয়ে মূল থেকে ডিভাইস পর্যন্ত পাথ হয় (এবং এতে '&' অক্ষর রয়েছে)
ব্রায়ান

ফলব্যাক হিসাবে, সবসময় ডিভাইসগুলির তালিকা পর্যবেক্ষণ করে এবং পরিবর্তনগুলি দেখার সময় আনপ্লাগিং এবং পুনরায় প্লাগিং করা হয়।
টেকনোফিল

14

ডিভাইসের আমি আগ্রহী ছিলেন দেখার জন্য, আমি প্রতিস্থাপন ছিল Win32_USBHubদ্বারা Win32_PnPEntityআদেল Hazzah এর কোড মধ্যে উপর ভিত্তি করে এই পোস্টে । এটি আমার পক্ষে কাজ করে:

namespace ConsoleApplication1
{
  using System;
  using System.Collections.Generic;
  using System.Management; // need to add System.Management to your project references.

  class Program
  {
    static void Main(string[] args)
    {
      var usbDevices = GetUSBDevices();

      foreach (var usbDevice in usbDevices)
      {
        Console.WriteLine("Device ID: {0}, PNP Device ID: {1}, Description: {2}",
            usbDevice.DeviceID, usbDevice.PnpDeviceID, usbDevice.Description);
      }

      Console.Read();
    }

    static List<USBDeviceInfo> GetUSBDevices()
    {
      List<USBDeviceInfo> devices = new List<USBDeviceInfo>();

      ManagementObjectCollection collection;
      using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_PnPEntity"))
        collection = searcher.Get();      

      foreach (var device in collection)
      {
        devices.Add(new USBDeviceInfo(
        (string)device.GetPropertyValue("DeviceID"),
        (string)device.GetPropertyValue("PNPDeviceID"),
        (string)device.GetPropertyValue("Description")
        ));
      }

      collection.Dispose();
      return devices;
    }
  }

  class USBDeviceInfo
  {
    public USBDeviceInfo(string deviceID, string pnpDeviceID, string description)
    {
      this.DeviceID = deviceID;
      this.PnpDeviceID = pnpDeviceID;
      this.Description = description;
    }
    public string DeviceID { get; private set; }
    public string PnpDeviceID { get; private set; }
    public string Description { get; private set; }
  }
}

এটি দুর্দান্ত কাজ করেছে। আপনি কেবল কোন ডিভাইসটি প্লাগ ইন করেছেন তা নির্ধারণের জন্য জিনিসগুলিকে সহজ করার জন্য, একটি বিরতিতে চালানোর জন্য এটি লিখুন, কোনও অভিধানে এন্ট্রি লিখুন এবং আপনি এটি শেষবার চালানোর সময় থেকে কোনও সংযোজন সম্পর্কে প্রতিবেদন করুন।
নিকসকুরই

8

আদেল Hazzah এর উত্তর কাজ কোড দেয়, ড্যানিয়েল Widdis এর এবং Nedko এর সব মন্তব্য করছেন যা Win32_USBControllerDevice অনুসন্ধান এবং তার নির্ভরশীল সম্পত্তি ব্যবহার করতে হবে, এবং ড্যানিয়েল এর উল্লেখ উত্তর কোড ছাড়া বিস্তারিত অনেক দেয়।

ওয়ার্কিং কোড সরবরাহ করার জন্য উপরোক্ত আলোচনার সংশ্লেষণ এখানে দেওয়া যা সমস্ত সংযুক্ত ইউএসবি ডিভাইসের সরাসরি অ্যাক্সেসযোগ্য পিএনপি ডিভাইস বৈশিষ্ট্যগুলি তালিকাভুক্ত করে:

using System;
using System.Collections.Generic;
using System.Management; // reference required

namespace cSharpUtilities
{
    class UsbBrowser
    {

        public static void PrintUsbDevices()
        {
            IList<ManagementBaseObject> usbDevices = GetUsbDevices();

            foreach (ManagementBaseObject usbDevice in usbDevices)
            {
                Console.WriteLine("----- DEVICE -----");
                foreach (var property in usbDevice.Properties)
                {
                    Console.WriteLine(string.Format("{0}: {1}", property.Name, property.Value));
                }
                Console.WriteLine("------------------");
            }
        }

        public static IList<ManagementBaseObject> GetUsbDevices()
        {
            IList<string> usbDeviceAddresses = LookUpUsbDeviceAddresses();

            List<ManagementBaseObject> usbDevices = new List<ManagementBaseObject>();

            foreach (string usbDeviceAddress in usbDeviceAddresses)
            {
                // query MI for the PNP device info
                // address must be escaped to be used in the query; luckily, the form we extracted previously is already escaped
                ManagementObjectCollection curMoc = QueryMi("Select * from Win32_PnPEntity where PNPDeviceID = " + usbDeviceAddress);
                foreach (ManagementBaseObject device in curMoc)
                {
                    usbDevices.Add(device);
                }
            }

            return usbDevices;
        }

        public static IList<string> LookUpUsbDeviceAddresses()
        {
            // this query gets the addressing information for connected USB devices
            ManagementObjectCollection usbDeviceAddressInfo = QueryMi(@"Select * from Win32_USBControllerDevice");

            List<string> usbDeviceAddresses = new List<string>();

            foreach(var device in usbDeviceAddressInfo)
            {
                string curPnpAddress = (string)device.GetPropertyValue("Dependent");
                // split out the address portion of the data; note that this includes escaped backslashes and quotes
                curPnpAddress = curPnpAddress.Split(new String[] { "DeviceID=" }, 2, StringSplitOptions.None)[1];

                usbDeviceAddresses.Add(curPnpAddress);
            }

            return usbDeviceAddresses;
        }

        // run a query against Windows Management Infrastructure (MI) and return the resulting collection
        public static ManagementObjectCollection QueryMi(string query)
        {
            ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(query);
            ManagementObjectCollection result = managementObjectSearcher.Get();

            managementObjectSearcher.Dispose();
            return result;
        }

    }

}

আপনি এটি চাইলে ব্যতিক্রম হ্যান্ডলিং যুক্ত করতে হবে। আপনি যদি ডিভাইস ট্রি এবং এর মতো কিছু বের করতে চান তবে ড্যানিয়েলের উত্তরের সাথে পরামর্শ করুন।


5

এটি কেবল অপসারণযোগ্য ইউএসবি ড্রাইভের সন্ধানকারী ব্যক্তিদের জন্য এটি একটি আরও সহজ উদাহরণ।

using System.IO;

foreach (DriveInfo drive in DriveInfo.GetDrives())
{
    if (drive.DriveType == DriveType.Removable)
    {
        Console.WriteLine(string.Format("({0}) {1}", drive.Name.Replace("\\",""), drive.VolumeLabel));
    }
}

4
ফ্লপিও ফিরে আসবে, সম্ভবত ইউএসবি কার্ড পাঠক, সম্ভাব্য জিপ, জাজ এবং
ওড়ব

এটি কেবলমাত্র একটি ইউএসবি-র বন্ধুত্বপূর্ণ নামের সাথে মেলাতে চায় এমন লোকদের জন্য এটি আদর্শ সমাধান। আমি ডেটা ব্যাকআপের জন্য এই উদাহরণটি ব্যবহার করি এবং যেহেতু ড্রাইভ লেটার পরিবর্তনের পরে আমার নামটি সন্ধান করা দরকার (এখানে ড্রাইভ.ভলিউম লেবেল)
বায়ো 42

4

আপনি যদি ম্যানেজমেন্টঅবজেক্টসারকে নিম্নলিখিতটিতে পরিবর্তন করেন:

ManagementObjectSearcher searcher = 
       new ManagementObjectSearcher("root\\CIMV2", 
       @"SELECT * FROM Win32_PnPEntity where DeviceID Like ""USB%"""); 

সুতরাং "গেট ইউএস ডিভাইসগুলি (দেখতে) এর মতো দেখাচ্ছে"

static List<USBDeviceInfo> GetUSBDevices()
{
  List<USBDeviceInfo> devices = new List<USBDeviceInfo>();

  ManagementObjectCollection collection;
  using (var searcher = new ManagementObjectSearcher(@"SELECT * FROM Win32_PnPEntity where DeviceID Like ""USB%"""))
    collection = searcher.Get();      

  foreach (var device in collection)
  {
    devices.Add(new USBDeviceInfo(
    (string)device.GetPropertyValue("DeviceID"),
    (string)device.GetPropertyValue("PNPDeviceID"),
    (string)device.GetPropertyValue("Description")
    ));
  }

  collection.Dispose();
  return devices;
}

}

আপনার ফলাফলগুলি ইউএসবি ডিভাইসে সীমাবদ্ধ থাকবে (আপনার সিস্টেমে সমস্ত ধরণের বিপরীতে)


4
যেখানে ইউএসবি দিয়ে শুরু ডিভাইসআইডিগুলির সন্ধান বিভাগটি কিছু আইটেম মিস করে। "Win32_USBC নিয়ন্ত্রণকারী ডিভাইস" এর নির্ভরশীলদের পুনরাবৃত্তি করা আরও ভাল
ড্যানিয়েল

2

আপনি এই থ্রেড দরকারী মনে হতে পারে । এবং এখানে একটি গুগল কোড প্রকল্প এটির উদাহরণ দিয়ে দেখায় (এটি পি / ইনভোকেসেস setupapi.dll)।


আমি সিস্টেম.ব্যবস্থাপনা সত্ত্বেও কেন অবজেক্টকোয়ারী ক্লাসের রেফারেন্স নেই তা আপনার কোনও ধারণা আছে?
রবার্ট

@ রবার্ট আপনি কি প্রকল্পটির রেফারেন্স যুক্ত করেছেন? আপনি আপনার প্রকল্পের রেফারেন্সগুলিতে ডান ক্লিক করে এটি করতে পারেন> রেফারেন্স যুক্ত করুন ...> সিস্টেমের জন্য অনুসন্ধান করুন এবং পরিচালনা করুন an ঠিক আছে।
আর্নেস্ট

0
  lstResult.Clear();
  foreach (ManagementObject drive in new ManagementObjectSearcher("select * from Win32_DiskDrive where InterfaceType='USB'").Get())
  {
       foreach (ManagementObject partition in new ManagementObjectSearcher("ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" + drive["DeviceID"] + "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition").Get())
       {
            foreach (ManagementObject disk in new ManagementObjectSearcher("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" + partition["DeviceID"] + "'} WHERE AssocClass = Win32_LogicalDiskToPartition").Get())
            {
                  foreach (var item in disk.Properties)
                  {
                       object value = disk.GetPropertyValue(item.Name);
                  }
                  string valor = disk["Name"].ToString();
                  lstResult.Add(valor);
                  }
             }
        }
   }

এটা কি করে object value?
newbieguy

ডিস্কের অন্যান্য উপলভ্য বৈশিষ্ট্যগুলি ঘুরে দেখুন এবং তার মানটিকে বস্তুর মানে সংরক্ষণ করুন
JxDarkAngel
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.