如何用程序设置98目录的共享方式??? (200分)

  • 主题发起人 主题发起人 honestman
  • 开始时间 开始时间
H

honestman

Unregistered / Unconfirmed
GUEST, unregistred user!
因为MIS设计时的失误,用了本地文件型数据库DBISAM来保持数据,提供多台计算机使用,
所以现在要采用补救措施。
我的思路是这样的(暂时考虑98下的情况):我把运行的程序放在A目录,数据库放在B目
录。开始的时候,A和B目录都设置为“只读”,当本地机运行程序的时候,没有任何问题。
但是当用户通过局域网运行程序的时候,由于要建立临时文件,必须把A目录设置为“完
全”。问题如下:
1、如何判断用户用什么方式运行程序?
2、如何把程序目录A和数据库目录B设置为“完全”或者“共享”?
 
我有一个单元,可以做到。写信过来,我G给你。Kingron@163.net
 
好象在cx66.com上有这样的文章,但现在上不去了。
 
>>由于要建立临时文件,必须把A目录设置为“完全”。
为什么这么做呢?让他在本机建立临时文件不好么?
 
1.我看用Application->ExeName(c++builder)得到的结果可以判断是否是本地还是远程(形如"c://..."是本地,
形如("////computername//..."是异地.(我在delphi5,cb4下均成功)
2.
//设置Path目录为名为ShareName完全共享(不限制用户连接数),c语言版:
NET_API_STATUS SetPathAllShare(char* Path,char* ShareName)
{
LPSHARE_INFO_2 lpShare_Info_2=new LPSHARE_INFO_2;
lpShare_Info_2->shi2_netname=ShareName;
lpShare_Info_2->shi2_type=STYPE_DISKTREE;
lpShare_Info_2->shi2_remark='共享目录';
lpShare_Info_2->shi2_permissions=ACCESS_ALL;
lpShare_Info_2->shi2_max_uses=-1;
lpShare_Info_2->shi2_path=Path;
return NetShareAdd(NULL,2,lpShare_Info_2,NULL);
}
 
to Kingron:
  信已经发出。

to ht99:
  还有其他地方有这些资料吗?

to wjiachun:
  不知道那个是否DBISAM本身的问题?我用只读打开数据库的时候,显示:
DBISAM Engine Error #11013 Access denied to table
'//honestman/MIS/data/xm.dat'

to sonie:
  第二个问题,通过局域网运行程序可以设置远方机器的共享方式吗???
 
建立共享目录函数:Function NetShareAdd(servername:PChar; level:SmallInt;buf:Pointer; buf_len:SmallInt):SmallInt;far;stdcall;external 'svrapi.dll';
撤销共享目录函数:Function NetShareDel(servername:PChar;buf:Pointer; reserved:SmallInt):SmallInt;far;stdcall;external 'svrapi.dll';
 
honestman:
已经发出,请注意查收信箱。
 
honestman,我看了看帮助文件。

DBISAM_OSEACCES (11013)
Access denied to table <TableName>

This error usually occurs when an attempt is made to open up a table that
has already been opened up exclusively by another application or the same
application. A table can be opened exclusively only once. It can also
occur when an attempt is made to open up a table for read/write access that
is in a read-only directory or on a read-only drive and not marked as
read-only as an attribute.

你的程序应该是后一种原因,试图打开一个没有标志只读属性的表进行读写操作,但是
该表在只读目录下或只读磁盘上。你把表设置为只读试试?
 
to Kingron:
  你的东西我没有收到啊!请重发。

to wjiachun:
  谢谢你!我回去试试!但是,如果想修改远方机器的目录的共享方式,我想还是
有难度吧???
 
to Kingron:
  你的东西我收到了!

to wjiachun:
  我查过了,发现只要在DBISAMTable有ReadOnly这个属性,但是我只是用DBISAMQuery,
那东西好象没有ReadOnly属性,怎么办啊?
 
算了,还是结束吧!
 
后退
顶部