![]() |
Netzwerkfreigabe - Problem mit Zugriffsrechten...
Hi All !
Also ich benutze in meinem Programm folgende Funktion um Verzeichnisse um Ordner freizugeben...
Delphi-Quellcode:
Den Code hab ich von der dsdt.info. Das Problem ist nun das ich bei
const
SType_DiskTree = 0; Access_Read = 1; Access_All = 127; Nerr_Success = 0; type TShareInfo2ExW = record shi2_NetName: PWideChar; shi2_Type: Longword; shi2_Remark: PWideChar; shi2_Permissions: Longword; shi2_Max_Uses: Longword; shi2_Current_Uses: Longword; shi2_Path: PWideChar; shi2_Passwd: PWideChar; end; TShareInfo2ExA= record shi2_NetName: PAnsiChar; shi2_Type: Longword; shi2_Remark: PAnsiChar; shi2_Permissions: Longword; shi2_Max_Uses: Longword; shi2_Current_Uses: Longword; shi2_Path: PAnsiChar; shi2_Passwd: PAnsiChar; end; type TNetShareAddFunc = function (servername: PChar; level: Longword; const buf: Pointer; parm_err: PLongWord): LongWord; stdcall; function ShareDirA(const ADir, AName, APassword: string; ReadOnly: Boolean): Boolean; var Info: TShareInfo2ExA; Err: Longword; Lib: THandle; NetShareAddFunc: TNetShareAddFunc; begin Result:=False; Lib:= LoadLibrary('Svrapi.dll'); if Lib <> 0 then begin try @NetShareAddFunc:= GetProcAddress(Lib,'NetShareAdd'); if @NetShareAddFunc <> nil then begin FillChar(Info, SizeOf(Info), 0); Info.shi2_netname := PAnsiChar(AName); Info.shi2_type := SType_DiskTree; Info.shi2_remark := nil; if ReadOnly then Info.shi2_permissions := Access_Read else Info.shi2_permissions := Access_All; Info.shi2_max_uses := LongWord(-1); Info.shi2_current_uses := 0; Info.shi2_path := PAnsiChar(ADir); Info.shi2_passwd := PAnsiChar(APassword); Result := NetShareAddFunc(nil, 2, @Info, @Err) = NERR_SUCCESS; end else RaiseLastOSError; finally FreeLibrary(Lib); end; end; end; function ShareDirW(const ADir, AName, APassword: WideString; ReadOnly: Boolean): Boolean; var Info: TShareInfo2ExW; Err: Longword; Lib: THandle; NetShareAddFunc: TNetShareAddFunc; begin Result:=False; Lib:= LoadLibrary('Netapi32.dll'); if Lib <> 0 then begin try @NetShareAddFunc:= GetProcAddress(Lib,'NetShareAdd'); if @NetShareAddFunc <> nil then begin FillChar(Info, SizeOf(Info), 0); Info.shi2_netname := PWideChar(AName); Info.shi2_type := SType_DiskTree; Info.shi2_remark := nil; if ReadOnly then Info.shi2_permissions := Access_Read else Info.shi2_permissions := Access_All; Info.shi2_max_uses := LongWord(-1); Info.shi2_current_uses := 0; Info.shi2_path := PWideChar(ADir); Info.shi2_passwd := PWideChar(APassword); Result := NetShareAddFunc(nil, 2, @Info, @Err) = Nerr_Success; end else RaiseLastOSError; finally FreeLibrary(Lib); end; end; end; function ShareDir(const ADir, AName, APassword: WideString; ReadOnly: Boolean): Boolean; begin if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then Result := ShareDirA(ADir, AName, APassword, ReadOnly) else Result := ShareDirW(ADir, AName, APassword, ReadOnly); end; ShareDir('C:\freigabe', 'Freigabe-Ordner', '', True) laut Windowsfreigabe diesen Ordner trotzdem als veränderbar freigegeben hab... :gruebel: Frage: Wo ist der Fehler ??? thx, Adversus |
Re: Netzwerkfreigabe - Problem mit Zugriffsrechten...
Moin Adversus,
die Doku sagt dazu folgendes: Zitat:
|
Re: Netzwerkfreigabe - Problem mit Zugriffsrechten...
...also wenn ich dich richtig verstehe gibts gar keine möglichkeit das auf diese weise zu machen ?! :? Hat vielleicht jemand ne idee wie man das anders machen könnte ????
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz