View Full Version : Share کردن یک Folder
ara_prg
شنبه 02 آبان 1383, 12:43 عصر
چطور میشه با دلفی یک Folder را Share کرد و یا آن را از حالت Share خارج کرد بطوری که کاربران شبکه بتوانند به آن Folder دسترسی پیدا کنند :گیج:
mkalone
شنبه 02 آبان 1383, 14:08 عصر
سلام
اگر منظورت Share کردن یک فولدر است باید از دستورات Net Share
در ویندوز 2000 و XP است .
NET SHARE tst="f:\test folder"
برای حذف فولدر از Share
NET SHARE tst /delete
ShellExecute function(in ShellAPI unit).
مهرداد
mkalone
شنبه 02 آبان 1383, 14:09 عصر
از این هم می توانی استفاده کنی
:
من تست نکرده ام
function NetShareAdd(servername:LPTSTR; level:DWORD; buf:LPBYTE; parm_err:LPDWORD): NET_API_STATUS; external ´netapi32´;
nasr
شنبه 02 آبان 1383, 14:31 عصر
این کدها اینطوری زیبا تر است :)
function NetShareAdd(servername:LPTSTR; level:DWORD; buf:LPBYTE; parm_err:LPDWORD): NET_API_STATUS; external ´netapi32´;
مهدی کرامتی
شنبه 02 آبان 1383, 14:48 عصر
از تابع WNetAddConnection2 استفاده کنید. مثال:
function MapDrive(UNCPath,UserName,PassWord,MapDrive:string ):integer;
var
NwR : TNetResource;
begin
with NwR do begin
dwType := RESOURCETYPE_ANY ;
lpLocalName := PChar(MapDrive);
lpRemoteName:= PChar(UNCPath);
lpProvider := 'NetWare- or compatible network';
end;
Result := WNetAddConnection2(NwR, PChar(PassWord), PChar(UserName), 0);
end;
اطلاعات بیشتر:
<span dir=ltr>
http://groups.google.com/groups?hl=en&lr=&q=WNetAddConnection2&meta=group%3 Dborland.public.delphi.*</p></span>
مهدی کرامتی
شنبه 02 آبان 1383, 14:49 عصر
بابا ای والله بخش دلفی!
تا من پست کنم 3 تا پست جدید رسیده :wise1:
مهدی کرامتی
شنبه 02 آبان 1383, 16:14 عصر
تحقیقات بیشتر:
پست قبلی نحوه Map کردن یک درایو به فولدری که از قبل Share شده است را نمایش میدهد.
برای Share کردن یک فولدر از تابع NetShareAdd استفاده میشود:
unit uTB_Share;
interface
uses windows, Classes, SysUtils;
resourcestring
SWin32Error = 'Win32-Error. Code: %d.'#10'%s';
type
SHARE_INFO_502 = record
shi502_netname : PWChar;
shi502_type : Integer;
shi502_remark : PWChar;
shi502_permissions : Integer;
shi502_max_uses : Integer;
shi502_current_uses : Integer;
shi502_path : PWChar;
shi502_passwd : PChar;
shi502_reserved : Integer;
shi502_security_descriptor : PSECURITY_DESCRIPTOR;
end;
NetAPIStatus = Integer;
TShareTypes = ( stDisk, stPrintQueue, stCommDevice, stIPC );
function CreateShare(machineW, netName, comment, path : Widestring;
MaxConnections: DWord; Sharetype :TShareTypes ): DWord;
function NetShareAdd (serverName : PWChar; level : cardinal; buf :
PChar; parm_err : PDWord) : NetAPIStatus; stdcall;
procedure FillShareInfo(var share : SHARE_INFO_502; netName, comment,
path : Widestring; MaxConnections: DWord; FShareType : TShareTypes);
procedure RaiseWin32Error(errorCode : DWord);
implementation
const
STYPE_DISKTREE =0;
STYPE_PRINTQ =1;
STYPE_DEVICE =2;
STYPE_IPC =3;
function NetShareAdd; external 'NETAPI32.DLL';
function CreateShare(machineW, netName, comment, path : Widestring;
MaxConnections: DWord; Sharetype :TShareTypes ): DWord;
var share : SHARE_INFO_502;
begin
FillShareInfo(share, netName, comment, path, MaxConnections,
ShareType);
result:= NetShareAdd(PWideChar(machineW),502,@share,nil);
if result <> 0 then RaiseWin32Error(result);
end;
procedure FillShareInfo(var share : SHARE_INFO_502; netName, comment,
path : Widestring; MaxConnections: DWord; FShareType : TShareTypes);
begin
{ Fill the SHARE_INFO_502 with our settings }
FillChar(share,SizeOf(SHARE_INFO_502),0);
share.shi502_netname:= PWideChar(netName);
case FShareType of
stDisk : share.shi502_type:= STYPE_DISKTREE;
stPrintQueue : share.shi502_type:= STYPE_PRINTQ;
stCommDevice : share.shi502_type:= STYPE_DEVICE;
stIPC : share.shi502_type:= STYPE_IPC;
end;
share.shi502_type:= share.shi502_type or 0;
share.shi502_remark:= PWideChar(comment);
share.shi502_max_uses:= MaxConnections;
share.shi502_path:= PWideChar(path);
end;
procedure RaiseWin32Error(errorCode : DWord);
var
error : EWin32Error;
begin
if errorCode <> 0 then
begin
error:=
EWin32Error.CreateResFmt(@SWin32Error,[errorCode,S ysErrorMessage(errorCode)]);
error.ErrorCode:= errorCode;
raise error;
end;
end;
end.
مثال:
CreateShare('',
'Temp Files',
'Here is a temporary repository',
'C:\Temp',
5,
stDisk);
یونیت uTB_Share و مثال مربوطه نیز ضمیمه شده است.
پریسا نامدار
یک شنبه 03 آبان 1383, 00:13 صبح
خیلی ممنون از مطالب مفیدتون. :flower: :flower:
ara_prg
یک شنبه 03 آبان 1383, 09:19 صبح
:تشویق: :تشویق: :تشویق:
از همه دوستان بسیار متشکرم :flower:
nasr
یک شنبه 16 دی 1386, 08:47 صبح
تحقیقات بیشتر:
پست قبلی نحوه Map کردن یک درایو به فولدری که از قبل Share شده است را نمایش میدهد.
برای Share کردن یک فولدر از تابع NetShareAdd استفاده میشود:
unit uTB_Share;
interface
uses windows, Classes, SysUtils;
resourcestring
SWin32Error = 'Win32-Error. Code: %d.'#10'%s';
type
SHARE_INFO_502 = record
shi502_netname : PWChar;
shi502_type : Integer;
shi502_remark : PWChar;
shi502_permissions : Integer;
shi502_max_uses : Integer;
shi502_current_uses : Integer;
shi502_path : PWChar;
shi502_passwd : PChar;
shi502_reserved : Integer;
shi502_security_descriptor : PSECURITY_DESCRIPTOR;
end;
NetAPIStatus = Integer;
TShareTypes = ( stDisk, stPrintQueue, stCommDevice, stIPC );
function CreateShare(machineW, netName, comment, path : Widestring;
MaxConnections: DWord; Sharetype :TShareTypes ): DWord;
function NetShareAdd (serverName : PWChar; level : cardinal; buf :
PChar; parm_err : PDWord) : NetAPIStatus; stdcall;
procedure FillShareInfo(var share : SHARE_INFO_502; netName, comment,
path : Widestring; MaxConnections: DWord; FShareType : TShareTypes);
procedure RaiseWin32Error(errorCode : DWord);
implementation
const
STYPE_DISKTREE =0;
STYPE_PRINTQ =1;
STYPE_DEVICE =2;
STYPE_IPC =3;
function NetShareAdd; external 'NETAPI32.DLL';
function CreateShare(machineW, netName, comment, path : Widestring;
MaxConnections: DWord; Sharetype :TShareTypes ): DWord;
var share : SHARE_INFO_502;
begin
FillShareInfo(share, netName, comment, path, MaxConnections,
ShareType);
result:= NetShareAdd(PWideChar(machineW),502,@share,nil);
if result <> 0 then RaiseWin32Error(result);
end;
procedure FillShareInfo(var share : SHARE_INFO_502; netName, comment,
path : Widestring; MaxConnections: DWord; FShareType : TShareTypes);
begin
{ Fill the SHARE_INFO_502 with our settings }
FillChar(share,SizeOf(SHARE_INFO_502),0);
share.shi502_netname:= PWideChar(netName);
case FShareType of
stDisk : share.shi502_type:= STYPE_DISKTREE;
stPrintQueue : share.shi502_type:= STYPE_PRINTQ;
stCommDevice : share.shi502_type:= STYPE_DEVICE;
stIPC : share.shi502_type:= STYPE_IPC;
end;
share.shi502_type:= share.shi502_type or 0;
share.shi502_remark:= PWideChar(comment);
share.shi502_max_uses:= MaxConnections;
share.shi502_path:= PWideChar(path);
end;
procedure RaiseWin32Error(errorCode : DWord);
var
error : EWin32Error;
begin
if errorCode <> 0 then
begin
error:=
EWin32Error.CreateResFmt(@SWin32Error,[errorCode,SysErrorMessage(errorCode)]);
error.ErrorCode:= errorCode;
raise error;
end;
end;
end.
مثال:
CreateShare('',
'Temp Files',
'Here is a temporary repository',
'C:\Temp',
5,
stDisk);
یونیت uTB_Share و مثال مربوطه نیز ضمیمه شده است.
سلام
ضمن تشکر
چطور میشه یه فولدر را از Share خارج کرد
ممنون
nasr
سه شنبه 10 اردیبهشت 1387, 08:53 صبح
سلام
کسی نمی دونه چطور باید فولد را از Share بودن خارج کرد؟
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.