用api函式讀取硬碟的序列號 (轉)
用讀取的序列號
在寫時我們想對每一臺都生成一個唯一的標識,而且在一此共享中我們也看到,軟體在不同的機器上生成了不同的標識,這是如何實現的呢,其實是軟體有一部分程式讀取了,本地計算機的一部分引數(如硬碟序列號,序列號等等),再透過一系列演算法而得到了一個唯一標識,其實我們也可以透過一個api函式生成我們的唯一標識,由於硬碟人人都有,而網路卡不一定每個人都有,所以以讀硬碟序列號為例,
下面就先介紹一下我們要用到的api函式
BOOL GetVolumeInformation(
LPCTSTR lpPathName, // 硬碟的路徑
LPTSTR lpVolumeNameBuffer, // 硬碟的卷標
D nVolumeNameSize, // 卷標的字串長度
LPDWORD lpVolumeSerialNumber, // 硬碟的序列號
LPDWORD lpMaximumComponentLength, // 最大的長度
LPDWORD lpFileSystemFlags, // 檔案的一此標誌
LPTSTR lpFileSystemNameBuffer, // 所在磁碟機代號的分割槽型別的長指標變數
DWORD nFileSystemNameSize // 分割槽型別的長指標變數所指向的字串長度
);
如果上述函式成功就返回一個非0值。
光說不做,是不行了,我們還得實踐一下:// 最大的檔案長度
首選用MFC AppWizard建立一個基於Dialog base的對話方塊工程,名為GetHardID,點選finish。
加一個按鈕,雙擊它,點選ok,並在對應的函式中加入如下程式碼:
LPCTSTR lpRootPathName="c:"; //取C盤
LPTSTR lpVolumeNameBuffer=new char[12];//卷標
DWORD nVolumeNameSize=12;// 卷標的字串長度
DWORD VolumeSerialNumber;//硬碟序列號
DWORD MaximumComponentLength;// 最大的檔案長度
LPTSTR lpFileSystemNameBuffer=new char[10];// 儲存所在磁碟機代號的分割槽型別的長指標變數
DWORD nFileSystemNameSize=10;// 分割槽型別的長指標變數所指向的字串長度
DWORD FileSystemFlags;// 檔案系統的一此標誌
::GetVolumeInformation(lpRootPathName,
lpVolumeNameBuffer, nVolumeNameSize,
&VolumeSerialNumber, &MaximumComponentLength,
&FileSystemFlags,
lpFileSystemNameBuffer, nFileSystemNameSize);
CString str;
str.Format("Seria Num is %lx ",VolumeSerialNumber);
AfxMessageBox(str);
編譯,連結並執行程式,單擊按鈕,在彈出的對話方塊中就是我們要的序列號。
對不對我們驗證一下,進入dos視窗,打入"dir c:/p"命令,怎麼樣是不是和我們的程式顯示的一模一樣
這樣我們就在功告成了。
E:sunyuzhe@263
主頁:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990632/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 獲取網路卡MAC、硬碟序列號、CPU ID、BIOS編號(1) - 硬碟序列號 - 技術應用 - 豆豆網Mac硬碟iOS
- ASP.NET獲取CPU序列號,硬碟序列號ID,獲取網路卡編號ASP.NET硬碟
- 檢視硬碟序列號硬碟
- iPhone查詢序列號生成函式iPhone函式
- 用diskid.dll和disk32.dll獲得硬碟序列號 (轉)硬碟
- win10 硬碟序列號怎麼查_win10系統如何查硬碟序列號Win10硬碟
- 精讀《函式快取》函式快取
- 我的pb 讀取 Execl函式函式
- API讀取寫入 ini檔案內容的方法函式詳解API函式
- win10 查詢硬碟序列號方法 win10主機硬碟序列號怎麼看Win10硬碟
- 教你用vbs指令碼獲取網路卡MAC,CPUID,硬碟序列號的實現程式碼指令碼MacUI硬碟
- Oracle層次查詢和分析函式在號段選取中的應用(轉)Oracle函式
- 練習 讀取函式裡的值函式
- 讀取工藝路線的函式函式
- 序列生成函式函式
- C#讀取Rss功能函式C#函式
- 在Delphi中巧用WINDOWS 的API函式 (轉)WindowsAPI函式
- 解析度、卷標、序列號、分割槽表的讀出 (轉)
- Windows序列號集(轉)Windows
- 如何獲取BIOS序列號iOS
- Excel函式應用教程:函式的引數(轉)Excel函式
- 用前面建立的函式獲取物件函式物件
- C語言setpwent()函式:從頭讀取密碼檔案中的賬號資料C語言函式密碼
- Oracle層次查詢和分析函式在號段選取中的應用Oracle函式
- DELPHI中使用API函式詳解 (轉)API函式
- Excel函式應用教程:函式的輸入方法(轉)Excel函式
- Excel函式應用教程:函式與公式的概念(轉)Excel函式公式
- QT槽函式獲取訊號傳送物件QT函式物件
- 取得網路卡序列號 (轉)
- PostgreSQL 原始碼解讀(121)- MVCC#6(獲取事務號-實現函式)SQL原始碼MVCC#函式
- C++ 序列操作函式C++函式
- Api函式列表——與檔案相關 (轉)API函式
- 呼叫API函式設計ABOUT視窗 (轉)API函式
- Win2K下的Api函式的攔截 (轉)API函式
- 語音訊號處理獲取 NFFT 的自定義函式音訊FFT函式
- C語言fgetc()函式:讀檔案函式(由檔案中讀取一個字元)C語言函式字元
- 讀寫INI檔案的四個函式 (轉)函式
- 用JS獲取函式相關的程式碼JS函式