c++程序如何判断文件是否在光盘上

来源:百度知道 编辑:UC知道 时间:2024/06/05 21:25:15
我用c++写个程序 如何判断本程序是否在光盘上运行? 怎么实现? 希望大家给点提示 我想做个程序不能让用户拷贝出来运行,只能在光盘上运行。回答的详细 我再加分哦~

你的想法,不太可能啊。

除非你的软件工作在非常底层,也就是说,硬件不允许你拷出来运行,那才可能。

防拷系统不是那么好做的
string GetAppPath(bool NameInc = false){//获取当前程序运行的目录
char buf[MAX_PATH];
GetModuleFileName(GetModuleHandle(0), buf, MAX_PATH-1);
if(NameInc) return buf;//全名
string rt = buf;
return rt.substr(0,rt.find_last_of('\\'));
}

用 GetModuleFileName 先得到程序路径
第一个字母则是程序盘符
判断 GetDriveType(盘符) == DRIVE_CDROM 可以知道是不是光驱

不过这样无法区分物理光驱和虚拟光驱。

程序中加密码不就行了啊,COPY 过去没密码也不能运行,
我可以给你一些生成唯一序列号的代码。可以去试用下我的双色球。

什么叫程序在光盘上运行?
首先注意,程序的运行都是在内存中进行的,你的说法有问题;
其实你是想让光盘上的文件不被拷贝,这个在目前是没办法实现的;
如果真想达到那种效果,就只能在编程的时候时常人为的去读光盘上的某些内容(用绝对路径写,当然光驱盘符要动态判断),不过由于频繁的访问外存,可能程序运行的效果不会很理想,并且这种编程风格也不太好。
如果你是怕程序被破解什么的,可以使用相关的加密或加壳技术。