VB程序如何防拷贝 请问各位高手,有什么办法使VB的程序只能规定一台机子使用,防止人家拷贝听说要用到硬盘卷标什么的,望知道的告诉我一声,参与者有分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以读取硬件的唯一标示号,比如网卡,硬盘,CPU等等GetVolumeInformation VB声明 Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long 说明 获取与一个磁盘卷有关的信息 返回值 Long,非零表示成功,零表示失败。会设置GetLastError 参数表 参数 类型及说明 lpRootPathName String,欲获取信息的那个卷的根路径 lpVolumeNameBuffer String,用于装载卷名(卷标)的一个字串 nVolumeNameSize Long,lpVolumeNameBuffer字串的长度 lpVolumeSerialNumber Long,用于装载磁盘卷序列号的变量 lpMaximumComponentLength Long,指定一个变量,用于装载文件名每一部分的长度。例如,在“c:\component1\component2.ext”的情况下,它就代表component1或component2名称的长度 lpFileSystemFlags Long,用于装载一个或多个二进制位标志的变量。对这些标志位的解释如下: FS_CASE_IS_PRESERVED 文件名的大小写记录于文件系统 FS_CASE_SENSITIVE 文件名要区分大小写 FS_UNICODE_STORED_ON_DISK 文件名保存为Unicode格式 FS_PERSISTANT_ACLS 文件系统支持文件的访问控制列表(ACL)安全机制 FS_FILE_COMPRESSION 文件系统支持逐文件的进行文件压缩 FS_VOL_IS_COMPRESSED 整个磁盘卷都是压缩的 lpFileSystemNameBuffer String,指定一个缓冲区,用于装载文件系统的名称(如FAT,NTFS以及其他) nFileSystemNameSize Long,lpFileSystemNameBuffer字串的长度 做一注册程序。用于在安装时“读取硬件的唯一标示号,比如网卡,硬盘,CPU等等” 并将这些信息加密后写到应用程序的某一文件中(最好是写到主程序中,方法如下),在程序加载时检查此信息合法性。在写主程序时定义一全局变量 string 型,初值设为特殊一点的字符。安装时用注册程序找到这字串改为加密后的机器硬件信息其实不是一定要用 string 型,其它类型也可以,只要能保证注册程序可以找得到就可以。 买一个USB加密狗(25元左右),然后用它提供的接口(.DLL)直接读写加密狗可能比较好一点. 我们公司一直用epass电子钥匙实现软件防拷贝,程序中记录可以使用该软件的钥匙的钥匙号,钥匙中记录这把钥匙使用者的用户名,可以操作的软件(在卖给用户的时候写好),然后在程序运行时判断用户输入的用户名,可以用计时器循环判断,只要用户把了钥匙程序就退出;你要愿意也可以在程序第一次运行的时候读取一个硬件标识写到钥匙中,再次运行时判断。epass的读写开发很简单,我们曾经在里面写入数字证书和私钥文件,用来进行文件加密,授权解密等等。 用CPU号吧,先获得用户的CPU号,再根据你规定的算法生成一个注册号。 如果还有什么疑问,建议访问http://www.pediy.com/ ADODC控件对数据库操作的方法 窗口快捷键的问题? 求禁止客户端建立共享文件夹代码? 请教大侠! 如何让分辨率适应程序?????????? 用VB开发的sniffer,有兴趣来看~2 能否调用可执行文件? 有一个问题请教高手? 菜鸟问题,如何用程序注册控件 请大家帮忙 如何判断身份证号码的正确性 鸡毛信
Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
说明
获取与一个磁盘卷有关的信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpRootPathName String,欲获取信息的那个卷的根路径
lpVolumeNameBuffer String,用于装载卷名(卷标)的一个字串
nVolumeNameSize Long,lpVolumeNameBuffer字串的长度
lpVolumeSerialNumber Long,用于装载磁盘卷序列号的变量
lpMaximumComponentLength Long,指定一个变量,用于装载文件名每一部分的长度。例如,在“c:\component1\component2.ext”的情况下,它就代表component1或component2名称的长度
lpFileSystemFlags Long,用于装载一个或多个二进制位标志的变量。对这些标志位的解释如下:
FS_CASE_IS_PRESERVED 文件名的大小写记录于文件系统
FS_CASE_SENSITIVE 文件名要区分大小写
FS_UNICODE_STORED_ON_DISK 文件名保存为Unicode格式
FS_PERSISTANT_ACLS 文件系统支持文件的访问控制列表(ACL)安全机制
FS_FILE_COMPRESSION 文件系统支持逐文件的进行文件压缩
FS_VOL_IS_COMPRESSED 整个磁盘卷都是压缩的
lpFileSystemNameBuffer String,指定一个缓冲区,用于装载文件系统的名称(如FAT,NTFS以及其他)
nFileSystemNameSize Long,lpFileSystemNameBuffer字串的长度
先获得用户的CPU号,
再根据你规定的算法生成一个注册号。