急,如何虚拟文件(夹) ( 积分: 200 )

  • 主题发起人 主题发起人 ptcn
  • 开始时间 开始时间
P

ptcn

Unregistered / Unconfirmed
GUEST, unregistred user!
我可以提供后台支持(根据需要从网络上得到文件数据),想虚拟一个(或多个)盘,就是看起来象一个盘(也有文件列表),实际上本地没有数据,用户访问时候由后台提供数据.想问诸位专家如何实现?提供线索也可以,谢谢大家了.
 
你可以考虑使用映射网络驱动器的方式来实现啊。服务端开隐藏共享。共享名后加$。或者使用FTP服务器。推荐使用FTP服务器。
客户端映射网络驱动器。net use //机器名/share$ z:{虚拟盘符} password user(好像是这个命令,具体记不清了。)//访问是共享文件夹,当然换成FTP也是OK的了。
当然也可以编程实现。代码:
var
NetSource : TNetResource;
begin
with NetSource do
begin
dwType := RESOURCETYPE_ANY;
lpLocalName := X:;
// 将远程资源映射到此驱动器
lpRemoteName := //hqServer/sys;
// 远程网络资源
lpProvider := ; // 必须赋值,
如为空则使用lpRemoteName的值。
end;
WnetAddConnection2(NetSource, Password, Guest,
//用户名为Guest,口令为Password
CONNECT_UPDATE_PROFILE);
//下次登录时重新连接
//此时在Windows资源管理器中可看到网络驱动器X:
if MessageDlg(Are you sure to disconnect Drive ?,
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
//不管是否有文件打开,断开网络驱动器X:
WNetCancelConnection2
( X:, CONNECT_UPDATE_PROFILE, True);
end;
在服务端,如果使用FTP,可以通过FTP建立虚拟文件夹,通过账户权限达到对每个用户使用不同文件的目的。但是可能需要自行开发FTP服务端或者安装FTP服务器。
使用windows的共享文件夹的话,服务端虚拟目录也是可以实现的。自己查找一下API,或者干脆调用dos命令实现。
 
smsman, 谢谢您,但我没有实际的数据,我的数据要通过特殊的方式获得,又查了查,好象得做个象驱动式的东西.另外文件名等信息我是有的,只是文件内容不在本地.
 
感觉没必要自己写驱动。可以仍用上述方法生成虚拟盘,不过目标改称自己本机,另外还有个在内存中建立虚拟盘的办法,记不清了。
虚拟盘中仍然保存物理文件,不过这些文件是你自己根据文件目录动态城市,它实质可以是一个类似于pif类型文件的自定义格式。
该格式与你自己的软件关联。可以是类似于bat文件文本类型,里面可以保存参数,当然也可以直接使用bat或其他什么的。
如内容为"a.exe -getfile(file1); getdir"等等各种命令。
注意把这个文件的图标定义成文件夹格式,后缀隐藏,很容易的吧。
当双击该文件时,根据该文件中的参数执行相应的命令。
自己写驱动,太费劲了。
 
subst命令
 
yes,就是那个.在程序中生成的办法论坛里有人写过,你自己搜索看看。
ptcn,解决问题后共享下思路哦。[:D]
你这个东西估计我近期也得写。
 
explorer外壳
 
我想起一个游戏:三国群英传2
玩它时就虚拟一个磁盘。跟游戏所在盘一样。但是不知道它是怎么弄的。有兴趣可以下载一个玩玩看。后来的版本不知道有没有,没有注意。
 
后退
顶部