如何编程实现虚拟硬盘

szpop 2012-08-11 10:16:30
请问该如何实现像金山快盘那样的虚拟硬盘技术,将一个映像文件挂载到系统成为一个虚拟硬盘那样操作,并且还能加密?
...全文
449 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vic_chang 2013-01-03
  • 打赏
  • 举报
回复
改写一个windows 硬盘驱动,虚拟出来一个即可。
九州剑王 2013-01-03
  • 打赏
  • 举报
回复
RamDisk
louise18 2012-12-31
  • 打赏
  • 举报
回复
引用 楼主 szpop 的回复:
请问该如何实现像金山快盘那样的虚拟硬盘技术,将一个映像文件挂载到系统成为一个虚拟硬盘那样操作,并且还能加密?
推荐filedisk,网上很容易找的源码,能实现将一个文件映射成虚拟磁盘
stecdeng 2012-09-20
  • 打赏
  • 举报
回复
truecrypt开源代码 看看
fly4free 2012-08-16
  • 打赏
  • 举报
回复
5楼 提供 第三个资源,只有exe
Yofoo 2012-08-15
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/zzz3265/4139163
http://download.csdn.net/detail/zzz3265/4145018
http://download.csdn.net/detail/zzz3265/4166946
zhouzhipen 2012-08-15
  • 打赏
  • 举报
回复
做磁盘驱动吧!
ketjin 2012-08-15
  • 打赏
  • 举报
回复
在DOS时代好解决,目前不好解决
网上有代码,我也刚下来,还没来的急琢磨
fly4free 2012-08-14
  • 打赏
  • 举报
回复
貌似答非所问。不过收藏了。
傻X 2012-08-11
  • 打赏
  • 举报
回复
WNetAddConnection2函数

目前还不知道怎么修改图标,我得去研究下,据说要修改注册表。

用法

VC用代码实现映射网络驱动器
转自:http://hi.baidu.com/luoshengwen/blog/item/61712d129665a250f819b8e2.html
一:打开Project->Add Project->Flie选择C:// Program Files/Microsoft Visual Studio/VC98/Lib/MPR.LIB
二:主要实现代码如下:
NETRESOURCE ns;
memset(&ns, 0, sizeof(ns));
ns.lpLocalName = "H:"; //如果不需要驱动器号,这儿可以是NULL
ns.lpRemoteName = "\\\\IP\\Share";//Ip为服务器IP,Share为共享的文件夹
ns.dwType = RESOURCETYPE_DISK;
if (WNetAddConnection2(&ns,"密码,"用户名",0)!=NO_ERROR)
{
MessageBox("连接成功,可以访问网上邻居机器的共享目录了");
}
三:WnetAddConnection2的用法
The WNetAddConnection2 function makes a connection to a network resource. The function can redirect a local device to the network resource.
The WNetAddConnection2 function supersedes the WNetAddConnection function. If you pass a handle to a window that the provider of network resources can use as an owner window for dialog boxes, use the WnetAddConnection3 function.
DWORD WNetAddConnection2(
LPNETRESOURCE lpNetResource, // points to structure that
// specifies connection details
LPCTSTR lpPassword, // points to password string
LPCTSTR lpUsername, // points to user name string
DWORD dwFlags // set of bit flags that specify
// connection options
);
例:
void CNeighborDlg::Redirect(const char *LocalName,const char *RemoteName,const char * UserName,const char *Password)

{

NETRESOURCE nr;

DWORD res;
char szUserName[32],

szPassword[32],

szLocalName[32],

szRemoteName[MAX_PATH];
strcpy(szUserName,UserName);
strcpy(szPassword,Password);
strcpy(szLocalName,LocalName);
strcpy(szRemoteName,RemoteName);

nr.dwType = RESOURCETYPE_ANY;
nr.lpLocalName = szLocalName;
nr.lpRemoteName = szRemoteName;
nr.lpProvider = NULL;
//
res = WNetAddConnection2(&nr, szPassword, szUserName, FALSE);
//
switch(res)
{
case NO_ERROR:
AfxMessageBox("网络驱动器映射成功");
break;
case ERROR_BAD_PROFILE:
AfxMessageBox("ERROR_BAD_PROFILE");
break;
case ERROR_CANNOT_OPEN_PROFILE:
AfxMessageBox("ERROR_CANNOT_OPEN_PROFILE");
break;
case ERROR_DEVICE_IN_USE:
AfxMessageBox("ERROR_DEVICE_IN_USE");
break;
case ERROR_EXTENDED_ERROR:
AfxMessageBox("ERROR_EXTENDED_ERROR");
break;
case ERROR_NOT_CONNECTED:
AfxMessageBox("ERROR_NOT_CONNECTED");
break;
case ERROR_OPEN_FILES:
AfxMessageBox("ERROR_OPEN_FILES");
break;
default:
AfxMessageBox("未知错误,可能需要帐号和密码认证,或者该主机或文件不存在");
break;
}
return;
}


 本课程的主题是: 透析Linux系统编程    不同于市面上的课程,只会把核心主题放到函数的讲解,本课程的核心主题是 Linux系统编程的经验总结 ;    当你在系统编程中,调用一个系统调用来解决问题时,是否考虑过 该系统调用是否会对系统性能带来影响?是否还有最优的方式?    当你在系统编程过程中,遇到问题,是否只是检查代码逻辑,而不会去深入底层去查找问题 ?    本课程将一一解决系统编程带给你的难点,疑点?    比如控制文件IO章节,给出系统文件操作的默认行为,应用中如何修改这些行为,给出文件IO操作的最优方式;   比如系统调用,给出系统调用原理;系统调用的正确使用方式等   比如进程实现,结合底层,对比线程,深入理解两者;给出进程使用经验总结;   比如线程同步,不仅引出互斥锁 条件变量 自旋锁 读写锁使用方式,同时给出各个机制的应用场景 ;   比如 进程间通信,引出各个进程间通信的机制原理,给出各个进程间通信的应用场景;   比如 信号,给出信号在进程中信号处理处理函数的正确使用方式,给出在多线程中信号处理的正确方式;   比如 共享库,给出共享库的实现机制,给出共享库的正确使用方式;   同时 会讲解 系统安全问题 ; 可执行程序的静态布局和动态布局 ;灵活使用内存映射和虚拟内存;系统事件跟踪;   给出程序性能的调优思路;    丰富的项目实例讲解 ,提供宝贵的商业项目开发经验 ; 

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧