用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 教你用vbs指令碼獲取網路卡MAC,CPUID,硬碟序列號的實現程式碼指令碼MacUI硬碟
- 精讀《函式快取》函式快取
- 查詢硬碟序列號的參考方案硬碟
- 在centos7下獲取 主機板 cpu 硬碟序列號CentOS硬碟
- win10 硬碟序列號怎麼查_win10系統如何查硬碟序列號Win10硬碟
- win10 查詢硬碟序列號方法 win10主機硬碟序列號怎麼看Win10硬碟
- 序列生成函式函式
- PostgreSQL 原始碼解讀(121)- MVCC#6(獲取事務號-實現函式)SQL原始碼MVCC#函式
- QT槽函式獲取訊號傳送物件QT函式物件
- 語音訊號處理獲取 NFFT 的自定義函式音訊FFT函式
- Win32 API CreateCompatibleDC 函式的相關應用Win32API函式
- C++ 序列操作函式C++函式
- Kotlin 集合函式式ApiKotlin函式API
- 函式式API簡介函式API
- SparkSQL -- 02 【SparkSQL檔案的讀取與落地,和Hive的整合,內建函式,自定義函式】SparkSQLHive函式
- python函式每日一講 - filter函式過濾序列Python函式Filter
- 2023最新WebStorm 啟用序列號WebORM
- python函式符號sympy的用法Python函式符號
- 快取函式的簡單使用快取函式
- 用listagg函式分組實現列轉行函式
- 臨時讀原始碼的函式原始碼函式
- 組合API-ref函式API函式
- C++ 序列操作函式最全總結C++函式
- Vue函式式元件的應用Vue函式元件
- OT的C函式是如何實時讀取資料庫的網站配置的?函式資料庫網站
- 序列化篇 生成xml 以及讀取xmlXML
- 查詢手機號碼是否支援攜號轉網的API介面API
- 啟用函式的作用函式
- State Processor API:如何讀取,寫入和修改 Flink 應用程式的狀態API
- 從標準輸入流中讀取並執行shell指定函式函式
- 強大的互動式原型設計:Axure RP 8 漢化啟用版最新+啟用序列號原型
- 簡單的檔案快取函式快取函式
- Qt5的訊號和槽函式QT函式
- 神經網路啟用函式=生物轉換器?神經網路函式
- SqlServer中將字串轉utf-8的函式、支援中文的UrlEncode函式SQLServer字串函式
- oracle函式手冊(轉)Oracle函式
- Hive行轉列函式Hive函式
- 全形轉半形函式函式
- 巧用PHP函式或常量快速獲取PHP版本號、最大檔名長度PHP函式