C\#PC 시리 얼 번 호 를 가 져 오 는 방법 예제

2783 단어 C#PC시퀀스 번호
C++에 서 는 GetSystem Firmwaretable 방법 으로 PC 의 시리 얼 번 호 를 얻 을 수 있 습 니 다.써 야 할 코드 가 많 지만 C\#에 서 는 WMI 를 사용 하여 시리 얼 번 호 를 받 을 수 있 습 니 다.
먼저 System.Management 를 설치 하고 이 라 이브 러 리 를 설 치 했 습 니 다.dotnet framework 와 dotnet core 는 본 고의 방법 으로 PC 의 시리 얼 번 호 를 얻 을 수 있 습 니 다.
System.Management 를 설치 하 는 방법 은 Nuget 을 통 해 System.Management 를 검색 한 다음 설치 하 는 것 입 니 다.VisualStudio 2017 프로젝트 형식 을 사용 하면 아래 코드 를 프로젝트 파일 로 복사 할 수 있 습 니 다.

<PackageReference Include="System.Management" Version="4.5.0" />
나 는 이 속도 가 비교적 빠 르 기 때문에 두 번 째 방법 으로 설치 하 는 것 을 비교적 좋아한다.
설치 완료 WMI 로 일련 번 호 를 받 는 데 필요 한 코드 가 적 습 니 다.아래 를 보십시오.

        var search = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS");
        var mobos = search.Get();
        foreach (var temp in mobos)
        {
          object serial = temp["SerialNumber"]; // ProcessorID if you use Win32_CPU
          pcsn = serial.ToString();
          Console.WriteLine(pcsn);
        }
이렇게 하면 시리 얼 번 호 를 받 을 수 있 지만 일부 장 치 는 시리 얼 번호 가 없 을 수도 있 고 다음 코드 로 돌아 가 는 경우 가 많 습 니 다.
To be filled by O.E.M
To be filled by O.E.M.
Default
Default string
위의 코드 의 마지막 줄 은 공백 이기 때문에 먼저 시리 얼 번호 가 존재 하 는 지 판단 해 야 합 니 다.모든 코드 는 아래 를 보 세 요.

    /// <summary>
    ///   pc 
    /// </summary>
    public static string GetPcsnString()
    {
      var pcsn = "";
      try
      {
        var search = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS");
        var mobos = search.Get();
        foreach (var temp in mobos)
        {
          object serial = temp["SerialNumber"]; // ProcessorID if you use Win32_CPU
          pcsn = serial.ToString();
          Console.WriteLine(pcsn);

          if
          (
            !string.IsNullOrEmpty(pcsn)
            && pcsn != "To be filled by O.E.M" //    
            && !pcsn.Contains("O.E.M")
            && !pcsn.Contains("OEM")
            && !pcsn.Contains("Default")
          )
          {
            break;
          }
          else
          {
            Console.WriteLine("   ");
          }
        }
      }
      catch (Exception e)
      {
        Debug.WriteLine(e);
        //     
      }

      return pcsn;
    }

이 방법 을 사용 하여 시리 얼 번 호 를 얻 는 것 은 비교적 소모 적 인 성능 이 므 로 다른 스 레 드 에 두 는 것 을 권장 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기