在局域中2000下,一个其他机器上共享目录,如何知道他是本身位置是C或D盘,他的实际路径是什么,有没有什么FUNCTION 或API。??
比如computer1 下C:\winnt被共享为\\computer1 \test,那么如何得到C:\winnt???如果采用历览comuter1下的目录一一比对,权限如何解决。
谢谢各位,急等。
比如computer1 下C:\winnt被共享为\\computer1 \test,那么如何得到C:\winnt???如果采用历览comuter1下的目录一一比对,权限如何解决。
谢谢各位,急等。
解决方案 »
- 如何实现在WEBBROWSER中实现获取鼠标点击坐标,并实现下次打开指定定位到这个地方
- QuickRep问题!
- SQL语句分析
- 程序会莫名其妙的退出,如何监测它是何时退出的吗?
- 有用过TMS组件中TPlanner控件得吗?
- delphi的字段名可以用字符串代替吗?
- UDP 多用户链接的问题
- 一个很奇怪的QuickReport报表问题
- 表A中有ID、NAME,一个ID对应一个NAME,现在新建了B表,也有这两个字段,只填写了ID,用什么语句把A表中的NAME相应地加入B表?
- 检验文件是否存在
- 如何打开一个*.ini&*.txt&*.sql文件?
- Adquery和dbgrid使用时,如何定位记录给文本输入框!!!
program con1;{$APPTYPE CONSOLE}uses
Windows,
SysUtils;const
NERR_Success = 0; // Successtype
NET_API_STATUS = DWORD;
PShare_Info_0 = ^TShare_Info_0;
TShare_Info_0 = record
shi0_netname: PWideChar;
end;
PShare_Info_0_Arr = ^TShare_Info_0_Arr;
TShare_Info_0_Arr = array[0..MaxInt div SizeOf(TShare_Info_0) - 1] of TShare_Info_0;
PShare_Info_1 = ^TShare_Info_1;
TShare_Info_1 = record
shi1_netname: PWideChar;
shi1_type: DWORD;
shi1_re: PWideChar;
end;
PShare_Info_1_Arr = ^TShare_Info_1_Arr;
TShare_Info_1_Arr = array[0..MaxInt div SizeOf(TShare_Info_1) - 1] of TShare_Info_1;
PShare_Info_2 = ^TShare_Info_2;
TShare_Info_2 = record
shi2_netname: PWideChar;
shi2_type: DWORD;
shi2_re: PWideChar;
shi2_permissions: DWORD;
shi2_max_uses: DWORD;
shi2_current_uses: DWORD;
shi2_path: PWideChar;
shi2_passwd: PWideChar;
end;
PShare_Info_2_Arr = ^TShare_Info_2_Arr;
TShare_Info_2_Arr = array[0..MaxInt div SizeOf(TShare_Info_2) - 1] of TShare_Info_2;
PShare_Info_502 = ^TShare_Info_502;
TShare_Info_502 = record
shi502_netname: PWideChar;
shi502_type: DWORD;
shi502_re: PWideChar;
shi502_permissions: DWORD;
shi502_max_uses: DWORD;
shi502_current_uses: DWORD;
shi502_path: PWideChar;
shi502_passwd: PWideChar;
shi502_reserved: DWORD;
shi502_security_descriptor: PSECURITY_DESCRIPTOR;
end;
PShare_Info_1004 = ^TShare_Info_1004;
TShare_Info_1004 = record
shi1004_re: PWideChar;
end;
PShare_Info_1006 = ^TShare_Info_1006;
TShare_Info_1006 = record
shi1006_max_uses: DWORD;
end;
PShare_Info_1501 = ^TShare_Info_1501;
TShare_Info_1501 = record
shi1501_reserved: DWORD;
shi1501_security_descriptor: PSECURITY_DESCRIPTOR;
end;function NetShareEnum(servername: PWideChar; level: DWORD; var buf: Pointer; prefmaxlen: DWORD; var entriesread: DWORD; var totalentries: DWORD; var resume_handle: DWORD): NET_API_STATUS; stdcall; external 'netapi32.dll';
function NetShareGetInfo(servername: PWideChar; netname: PWideChar; level: DWORD; var buf: Pointer): NET_API_STATUS; stdcall; external 'netapi32.dll';
function NetApiBufferFree(P: Pointer): NET_API_STATUS; stdcall;external 'netapi32.dll';var
Server: PWideChar;
Buffer, Loop: PShare_Info_0;
Buf502: PShare_Info_502;
NetResult: DWORD;
entriesread: DWORD;
totalentries: DWORD;
resume_handle: DWORD;
I: Integer;
begin
if (ParamCount = 0) then begin
Server := nil;
end
else begin
Server := PWideChar(WideString(ParamStr(1)));
end;
entriesread := 0;
totalentries := 0;
resume_handle := 0;
NetResult := NetShareEnum(Server, 0, Pointer(Buffer), DWORD(-1), entriesread, totalentries, resume_handle);
if (NetResult = NERR_Success) then begin
Loop := Buffer;
WriteLn('Entries read: ', entriesread);
for I := 1 to entriesread do begin
WriteLn('Name: ', string(Loop.shi0_netname));
try
NetResult := NetShareGetInfo(Server, Loop.shi0_netname, 502, Pointer(Buf502));
if (NetResult = NERR_Success) then begin
WriteLn('* Net name: ', string(Buf502.shi502_netname));
WriteLn('* Type: ', Buf502.shi502_type);
WriteLn('* Re: ', string(Buf502.shi502_re));
WriteLn('* Permissions: ', Buf502.shi502_permissions);
WriteLn('* Max uses: ', Buf502.shi502_max_uses);
WriteLn('* Current uses: ', Buf502.shi502_current_uses);
WriteLn('* Path: ', string(Buf502.shi502_path));
WriteLn('* Password: ', string(Buf502.shi502_passwd));
WriteLn('* Reserved: ', Buf502.shi502_reserved);
end
else begin
WriteLn('* Error: ', SysErrorMessage(NetResult));
end;
NetApiBufferFree(Buf502);
except on E: Exception do WriteLn('* Error: ', E.Message);
end;
WriteLn;
Inc(Loop);
end;
NetApiBufferFree(Buffer);
end;
end.
這個都看不懂, 麻煩了!!!!
已做试验,本地共享能够通过,但网路上其他共享资源,仍然是不行的。
理由是拒绝访问,事实上我网络用户不是管理员但对网络资源有权限的。
那再加啊!!!>>本地共享能够通过,但网路上其他共享资源,仍然是不行的。理由是拒绝访问
可以的, 你只要先登录到对方 電腦就可
Entries read: 14
Name: D_driver
* Net name: D_driver
* Type: 0
* Re:
* Permissions: 0
* Max uses: 4294967295
* Current uses: 1
* Path: D:* Password:
* Reserved: 0Name: EpsonLQ-
* Net name: EpsonLQ-
* Type: 1
* Re: Epson LQ-1050C
* Permissions: 0
* Max uses: 4294967295
* Current uses: 0
* Path: Epson LQ-1050C,LocalsplOnly
* Password:
* Reserved: 124Name: IPC$
* Net name: IPC$
* Type: 2147483651
* Re: 遠端 IPC
* Permissions: 0
* Max uses: 4294967295
* Current uses: 1
* Path:
* Password:
* Reserved: 0
我都用FileCtrl单元selectdirectory去选取网络资源了,我在我相应的测试程序之前,都试过先打开网络资源,还是不起作用。不知什么原因了。对了,我试的是工作组的电脑,因为我这里没有域控制器。是不是这个原因??