AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Zugriff auf Freigabe per Delphi-Code
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf Freigabe per Delphi-Code

Ein Thema von azwa66 · begonnen am 30. Okt 2008 · letzter Beitrag vom 3. Nov 2008
Antwort Antwort
azwa66

Registriert seit: 22. Mär 2004
38 Beiträge
 
#1

Zugriff auf Freigabe per Delphi-Code

  Alt 30. Okt 2008, 19:30
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.447 Beiträge
 
Delphi 12 Athens
 
#2

Re: Zugriff auf Freigabe per Delphi-Code

  Alt 30. Okt 2008, 19:43
Das geht mit NetUseAdd. Bei Level = 2 kannst du in der Struktur auch einen anderen Usernamen angeben.
Uwe Raabe
  Mit Zitat antworten Zitat
azwa66

Registriert seit: 22. Mär 2004
38 Beiträge
 
#3

Re: Zugriff auf Freigabe per Delphi-Code

  Alt 31. Okt 2008, 10:18
danke für die rasche antwort. hast du auch ein code-beispiel?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.447 Beiträge
 
Delphi 12 Athens
 
#4

Re: Zugriff auf Freigabe per Delphi-Code

  Alt 31. Okt 2008, 14:58
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:
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;
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.

Wenn nicht benötigt können Username und Password auch leer bleiben.
Uwe Raabe
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#5

Re: Zugriff auf Freigabe per Delphi-Code

  Alt 31. Okt 2008, 16:15
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;
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
azwa66

Registriert seit: 22. Mär 2004
38 Beiträge
 
#6

Re: Zugriff auf Freigabe per Delphi-Code

  Alt 3. Nov 2008, 11:43
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?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz