[转]C# 获取硬盘序列号 Volume Serial Number

摘要:
它可以防止一个序列号N多人用的现象。下面的方法通过WindowsAPI获得硬盘号。usingSystem.Runtime.InteropServices;[DllImport]privatestaticexternintGetVolumeInformation;privatestringGetVolOf...{constintMAX_FILENAME_LEN=256;intretVal=0;inta=0;intb=0;stringstr1=null;stringstr2=null;inti=GetVolumeInformation;returnretVal.ToString("x");}调用方法:例如C盘:GetVolOf("C");不过无论你的注册算法如何精妙,始终会被破解。因为你的算法始终在软件客户端,cracker总是有机会找到你的注册算法,做出注册机来。个人觉得如果做依赖Web的程序,最好还是把注册算法写在WebService里面,这样cracker就没法从本地破解注册算法了,这样就大大增加了安全性。
在做软件注册时,通常用硬盘号(建议用散列后的硬盘号)作为本地电脑特征码,加上用户名以及公司名等其他信息,通过一定的算法,得到软件序列号。这样做的好处的显而易见的。它可以防止一个序列号N多人用的现象。现在有些软件就是一个注册码,在网上公开,全世界人都在用。但是也有相应的缺陷。客户只能在一台电脑上用你写的软件。下面的方法通过Windows API获得硬盘号。
[转]C# 获取硬盘序列号 Volume Serial Number第1张usingSystem.Runtime.InteropServices;
[转]C# 获取硬盘序列号 Volume Serial Number第1张[DllImport(
"kernel32.dll")]
[转]C# 获取硬盘序列号 Volume Serial Number第1张
privatestaticexternintGetVolumeInformation(
[转]C# 获取硬盘序列号 Volume Serial Number第1张
stringlpRootPathName,
[转]C# 获取硬盘序列号 Volume Serial Number第1张
stringlpVolumeNameBuffer,
[转]C# 获取硬盘序列号 Volume Serial Number第1张
intnVolumeNameSize,
[转]C# 获取硬盘序列号 Volume Serial Number第1张
refintlpVolumeSerialNumber,
[转]C# 获取硬盘序列号 Volume Serial Number第1张
intlpMaximumComponentLength,
[转]C# 获取硬盘序列号 Volume Serial Number第1张
intlpFileSystemFlags,
[转]C# 获取硬盘序列号 Volume Serial Number第1张
stringlpFileSystemNameBuffer,
[转]C# 获取硬盘序列号 Volume Serial Number第1张
intnFileSystemNameSize
[转]C# 获取硬盘序列号 Volume Serial Number第1张);
[转]C# 获取硬盘序列号 Volume Serial Number第1张
[转]C# 获取硬盘序列号 Volume Serial Number第14张[转]C# 获取硬盘序列号 Volume Serial Number第15张
privatestringGetVolOf(stringdrvID)...{
[转]C# 获取硬盘序列号 Volume Serial Number第16张
constintMAX_FILENAME_LEN=256;
[转]C# 获取硬盘序列号 Volume Serial Number第16张
intretVal=0;
[转]C# 获取硬盘序列号 Volume Serial Number第16张
inta=0;
[转]C# 获取硬盘序列号 Volume Serial Number第16张
intb=0;
[转]C# 获取硬盘序列号 Volume Serial Number第16张
stringstr1=null;
[转]C# 获取硬盘序列号 Volume Serial Number第16张
stringstr2=null;
[转]C# 获取硬盘序列号 Volume Serial Number第16张
inti=GetVolumeInformation(
[转]C# 获取硬盘序列号 Volume Serial Number第16张drvID
+@":",
[转]C# 获取硬盘序列号 Volume Serial Number第16张str1,
[转]C# 获取硬盘序列号 Volume Serial Number第16张MAX_FILENAME_LEN,
[转]C# 获取硬盘序列号 Volume Serial Number第16张
refretVal,
[转]C# 获取硬盘序列号 Volume Serial Number第16张a,
[转]C# 获取硬盘序列号 Volume Serial Number第16张b,
[转]C# 获取硬盘序列号 Volume Serial Number第16张str2,
[转]C# 获取硬盘序列号 Volume Serial Number第16张MAX_FILENAME_LEN
[转]C# 获取硬盘序列号 Volume Serial Number第16张);
[转]C# 获取硬盘序列号 Volume Serial Number第16张
[转]C# 获取硬盘序列号 Volume Serial Number第16张
returnretVal.ToString("x");
[转]C# 获取硬盘序列号 Volume Serial Number第34张}

调用方法:例如C盘:GetVolOf("C");

不过无论你的注册算法如何精妙,始终会被破解。因为你的算法始终在软件客户端,cracker总是有机会找到你的注册算法,做出注册机来。看看网上流传的五花八门的注册机就知道了。个人觉得如果做依赖Web的程序,最好还是把注册算法写在Web Service里面,这样cracker就没法从本地破解注册算法了,这样就大大增加了安全性。

免责声明:文章转载自《[转]C# 获取硬盘序列号 Volume Serial Number》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇设置Tomcat管理员用户名和密码HTTP API接口安全设计下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.NET Core容器化开发系列(一)——Docker里面跑个.NET Core

前言     博客园中已经有很多如何在Docker里面运行ASP.NET Core的介绍了。本篇主要介绍一些细节,帮助初学的朋友更加深入地理解如何在Docker中运行ASP.NET Core。 安装Docker     Docker现支持在主流Linux、Windows和macOS上安装,官方的安装文档请参考docker docs。鉴于国内的网络环境,...

Chrome 浏览器快捷键

Ø  前言 记录下 Chrome 的快捷键,原文链接:http://www.cnblogs.com/mikalshao/archive/2010/11/03/1868568.html   1.   标签页和窗口快捷键 Ctrl + N 打开新窗口。 Ctrl + T 打开新标签页。 Ctrl + Shift + N 在隐身模式下打开新窗口。...

KB242450:如何使用关键字和查询词查询 Microsoft 知识库

KB242450:如何使用关键字和查询词查询 Microsoft 知识库 http://support.microsoft.com/kb/242450 http://support.microsoft.com/default.aspx?scid=kb;EN-US;242450  http://support.microsoft.com/kb/242450/z...

自动化构建工具—gulp的用法简单总结

  把之前用到的gulp总结整理下,有时候说不出来的,就写出来吧,做个笔记,以后也可以慢慢补充   cnpm i --save-dev gulp 把nodejs模块写到package.json配置文件中,当保存到git仓库时,只需保存package.json即可     用到的gulp模块有:gulp-clean/gulp-concat/gulp-conn...

uniAPP Android平台完整更新与热更新

一、概述 1.uni-app打包成apk或wgt文件,使用plus.runtime.getProperty方法获取本地应用资源版本号。2.调用后端接口,拿到与后端规定好的版本号,与前面获取的版本号进行对比,如果不一致(也可以判断当前版本号是否小于线上版本号,也就是最新版本号),进行下一步操作。3.uni.showModal或其他弹出框弹出下载提示。4.使用...

使用Eclipse开发Java应用并部署到SAP云平台SCP上去

1. 首先根据这个链接配置好Eclipse。 确保SAP Cloud Platform Tools for Java正确安装。 确保neo SDK的路径配置正确: 我使用的是下图这个SDK:neo-java-web-sdk-3.51.14.zip 将我的github 项目下载到本地, 导入到Eclipse去,确保本地能够运行成功。 然后新建一个服务...