none
PNPDeviceID는 모든 기기에서 공통 값을 갖나요? RRS feed

  • 질문

  • 안녕하세요.

    System.Management의 ManagementObjectSearcher를 이용해서 WIN32_DiskDrive를 받아와서, 특정 USB가 시스템 상에 삽입되어 있을 때 동작하는 소프트웨어를 제작하려고 합니다.

    SerialNumber를 받아와서 처리하려니 처리가 되지 않아, PNPDeviceID값을 받아와서 동일한지 여부를 판단하려고 하는데요.

    몇 대의 PC에서 테스트했을 때 값은 동일한 것으로 보여지는데, 이 PNPDeviceID값은 특정 USB 스토리지에 종속되어 항상 동일한 값을 갖는지 궁금합니다.

    답변 부탁드립니다.

    감사합니다.

    2020년 3월 11일 수요일 오전 11:29

모든 응답

  • 안녕하세요

    어떤 프로그래밍 언어를 사용하고 있는가요?

    MSDN Community Support Ricky

    다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2020년 3월 12일 목요일 오전 2:59
    중재자
  • 안녕하세요.

    C#을 사용하고 있습니다.

    다음 코드와 같이 PNPDeviceID만 분리하여 특정 USB를 구분하는 용도로 사용하려 하는데, 가능할지 궁금하여 문의드렸습니다.

    List<USBDeviceInformation> devices = new List<USBDeviceInformation>();
                ManagementObjectCollection collection;
                using (var searcher = new ManagementObjectSearcher(@"Select * from Win32_DiskDrive where InterfaceType='USB'"))
                    collection = searcher.Get();
                List<string> serials = new List<string>();
                foreach (var device in collection)
                {
                    string val = device["PNPDeviceID"].ToString();
                    serials.Add(val);
                }

    2020년 3월 12일 목요일 오전 4:03
  • MSDN포럼을 이용해 주셔서 감사합니다.
    설명에 따르면 컴퓨터가 모두 동일한 PNPDeviceID를 갖고 잊는지 확인하려는것 같은데요.
    코드를 테스트했지만 해당 코드로는 올바른 정보를 얻지 못하였습니다.
    그래서 테스트를 위해 코드를 수정하였는데 다음 코드를 사용하여 정확한 PNPDeviceID를 분리할수 있었습니다.
    코드:

             ManagementObjectCollection collection;
                using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_USBHub"))
                    collection = searcher.Get();
                List<string> serials = new List<string>();
                foreach (var device in collection)
                {
                    string PNPDeviceID = device["PNPDeviceID"].ToString();
                    Console.WriteLine(PNPDeviceID);

                }

    다른 컴퓨터에서 테스트 한 결과 동일한 유형의 장치를 사용하면 PNPDeviceID가 동일하다는 것을 확인하였습니다.
    도움이 되었으면 합니다.

    MSDN Community Support Ricky

    다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

              
    2020년 3월 13일 금요일 오전 6:49
    중재자