반응형
C# 하드번호
C#에서 하드번호를 가져오는 방법을 포스팅한다.
가져오는방법을 잘이용해서 Get이아닌 Set을 사용하면 하드번호를 바꿀 수 있다.
일단 포스팅전 왜 하드번호를 알아야할까?
일반적인 배포 프로그램에선 사용할 일이 없지만.. 특정 프로그램에서 디스크 일련번호를 서버에 올려두고, 특정 디스크에 일련번호만 프로그램이 실행되도록 만들 수 있다...
하지만 http://tctt.tistory.com/153 에 포스팅된 툴을 이용하면 손쉽게 우회가 가능한 허점이 있다.
프로그램 실행 모습이다.
현재 내 C드라이브의 하드 시리얼넘버는 20B0 1E33이다.
http://tctt.tistory.com/153 에 포스팅한 툴에도 동일하게 20B0 1E33으로 나온다.
왜인지는 모르겠으나 영문 A ~ F / 숫자 0~9 로 조합된 HEX보단 순수 숫자로만 구성된 DECIMAL 형식을 많이 사용하는거같아 HEX코드를 DECIMAL형식으로 바꾸는 함수를 만들고 사용했다.
소스코드만 사용해서 코딩한다면, 참조추가에서
어셈블리 -> 프레임워크에있는 System.Management 를 꼭 추가해야한다.
핵심 소스코드 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | private void button1_Click(object sender, EventArgs e) { //ManagementObject 클래스사용해서 manageobject 객체생성 //초기화는 C드라이브로지정해주기. ManagementObject manageobject = new ManagementObject("win32_logicaldisk.deviceid=\"" + "C" + ":\""); manageobject.Get(); //출력 textBox1.Text = manageobject["VolumeSerialNumber"].ToString(); textBox2.Text = HextoDec(manageobject["VolumeSerialNumber"].ToString()).ToString(); } //String Hex data => Decimal Converting public static Decimal HextoDec(string str) { str = str.Replace("x", string.Empty); long result = 0; long.TryParse(str, System.Globalization.NumberStyles.HexNumber, null, out result); return result; } | cs |
다운로드 :
반응형
'C# > C# Windows Form' 카테고리의 다른 글
C# 마방진 (0) | 2017.10.13 |
---|---|
C# string To DateTime (2) | 2017.09.18 |
C# Google Adsense (6) | 2017.07.21 |
C# 관리자권한 실행 (0) | 2017.06.13 |
C# AutoIt 응용 (0) | 2017.06.05 |