![]() |
Zugriff auf Freigabe per Delphi-Code
hallo,
bräuchte mal eure hilfe. kennt jemand von euch eine möglichkeit per delphi-code auf eine freigabe (sagen wir mal \\server01\c$) zuzugreifen, obwohl der aktuelle benutzer keine berechtigung auf diese freigabe hat? ich möchte der routine als parameter einen benutzer und ein passwort übergeben mit der die freigabe geöffnet wird. soll quasi identisch ablaufen wie netzwerklaufwerk verbinden -> verbindung unter anderem benutzernamen herstellen. hoffe ich hab mich verständlich ausgedrückt. danke schon mal im voraus. |
Re: Zugriff auf Freigabe per Delphi-Code
Das geht mit
![]() |
Re: Zugriff auf Freigabe per Delphi-Code
danke für die rasche antwort. hast du auch ein code-beispiel?
|
Re: Zugriff auf Freigabe per Delphi-Code
Habe gerade festgestellt, daß NetUseAdd nicht in der Standard Delphi Windows API vorhanden ist. Aber diese Wrapper sollten den gleichen Zweck erfüllen und benötigen lediglich die Windows Unit.
Delphi-Quellcode:
Bei NetUseAdd kann LocalName leer bleiben, dann wird automatisch ein freier Laufwerksbuchstabe vergeben. Bitte die gemappten Laufwerke immer wieder mit NetUseDelete freigeben, da sonst irgendwann keine Laufwerksbuchstaben mehr frei sind.
function NetUseAdd(const LocalName, RemoteName, UserName, Password: string; var AccessName: string): DWord;
var netResource: TNetResource; dwResult, dwBufSize, dwFlags: DWORD; hRes: DWORD; buf: array[0..1024] of Char; begin dwFlags := CONNECT_REDIRECT; ZeroMemory(@netResource, sizeof(TNetResource)); with netResource do begin dwType := RESOURCETYPE_DISK; lpLocalName := PChar(LocalName); lpRemoteName := PChar(RemoteName); lpProvider := nil; end; dwBufSize := Sizeof(buf); result := WNetUseConnection(0, netResource, PChar(UserName), PChar(Password), dwFlags, buf, dwBufSize, dwResult); if hRes = NO_ERROR then AccessName := buf; end; function NetUseDelete(const LocalName: string): Boolean; var hRes: DWORD; begin hRes := WNetCancelConnection2(PChar(LocalName), CONNECT_UPDATE_PROFILE, true); result := (hres = NO_ERROR); end; Wenn nicht benötigt können Username und Password auch leer bleiben. |
Re: Zugriff auf Freigabe per Delphi-Code
So verbinde ich ein Volume oder eine Freigabe : (Code ist nicht von mir)
Delphi-Quellcode:
function NetzlaufwerkVerbinden(Laufwerk: string; Pfad: string;
Username: string; Password: string; RestoreAtLogon: Boolean): DWORD; var NetResource: TNetResource; dwFlags: DWORD; begin with NetResource do begin dwType := RESOURCETYPE_DISK; lpLocalName := PChar(Laufwerk); lpRemoteName := PChar(Pfad); lpProvider := nil; end; if (RestoreAtLogon) then dwFlags := CONNECT_UPDATE_PROFILE else dwFlags := 0; Result := WNetAddConnection2(NetResource, PChar(Password), PChar(Username), dwFlags); end; |
Re: Zugriff auf Freigabe per Delphi-Code
habs mal mit beiden methoden probiert! das ergebnis ist immer 5 (ERROR_ACCESS_DENIED)
d:= NetUseAdd(EmptyStr, '\\dbsrv01\c$', EmptyStr, EmptyStr, str); bzw. d := NetzlaufwerkVerbinden('y:', '\\dbsrv01\c$', 'administrator', 'xxx', false); beim verbinden über den windows explorer funktioniert es tadellos. was mache ich denn falsch? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:21 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