首先,介绍一下问题的背景:我做的是一个播放器,能播放加密后的音视频文件,即这个播放器能对加密后的音视频文件自动解密并播放!且解密后的文件不能被用户所得到!即对这个视频文件起到一个内容保护作用!还有我用的是VC自带控件windows media player 9! 现在遇到的问题是:我在解密完音视频文件后,还得把它另存在特定的路径下,然后用windows media player控件类的SetUrl函数来播放该音视频文件!这样做解密后的文件就可以轻松的被用户得到了,就不能对原始文件进行保护了! 一些代码:
CFile fileCoded("路径名",CFile::modeCreate|CFile::modeWrite);
fileCoded.Write(data,flen);//data是存储解密后的音视频文件的数据,flen是文件的长度
fileCoded.Close();
MediaPlay.SetUrl(“路径名”); 我想要问的问题是: 在写文件的时候,能不能不指定路径名或者说可以隐藏路径名,或者说能写到缓冲区里面而不直接写到硬盘上,这样用户就得不到原始文件了,就起到保护作用了!
但这样就有一个矛盾,就是不指定路径名,后面的SetUrl函数没法打开音视频文件啊!请各位大侠指点一下,能不能想个两全其美的方法或新方案来同时解决这两个问题!
CFile fileCoded("路径名",CFile::modeCreate|CFile::modeWrite);
fileCoded.Write(data,flen);//data是存储解密后的音视频文件的数据,flen是文件的长度
fileCoded.Close();
MediaPlay.SetUrl(“路径名”); 我想要问的问题是: 在写文件的时候,能不能不指定路径名或者说可以隐藏路径名,或者说能写到缓冲区里面而不直接写到硬盘上,这样用户就得不到原始文件了,就起到保护作用了!
但这样就有一个矛盾,就是不指定路径名,后面的SetUrl函数没法打开音视频文件啊!请各位大侠指点一下,能不能想个两全其美的方法或新方案来同时解决这两个问题!
2、可以通过API Hook,将有关文件操作的API,如CreateFile、ReadFile、WriteFile重定向到内存中,也就是将文件内容写到内存中,读取也在内存中读取。