Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi auf Laufwerk kopieren, auf das User keinen Zugriff hat? (https://www.delphipraxis.net/85544-auf-laufwerk-kopieren-auf-das-user-keinen-zugriff-hat.html)

Reinhold_P 1. Feb 2007 11:44


auf Laufwerk kopieren, auf das User keinen Zugriff hat?
 
Hallo,

zum Kopieren von Dateien verwendet ich copyFile(PChar(aSrcFile),PChar(aDestFile),True);

Das Programm soll aber jetzt auf ein Laufwerk kopieren, auf das der Benutzer keinen Zugriff hat.

Das Programm kennt natürlich den Windows-Benutzer und das -Passwort, der Programm-Benutzer nicht.

Bin für jeden Hinweis dankbar.

Reinhold P.

Luckie 1. Feb 2007 11:49

Re: auf Laufwerk kopieren, auf das User keinen Zugriff hat?
 
Wo ist jetzt das Problem, deine konkrete Frage? wenn das Programm die Logindaten kennt, kann es sich doch zu dem Netzlaufwerk / Rechner verbinden und die Dateien kopieren. Bleibt allerdings die Sicherheitsfrage, wie dein programm die Daten kennt, aber der Benutzer nicht. Fest in die Exe mit einkompiliert? Sehr unsicher.

SirThornberry 1. Feb 2007 11:51

Re: auf Laufwerk kopieren, auf das User keinen Zugriff hat?
 
@Luckie: Das Laufwerk muss ja nicht unbedingt ein netzlaufwerk sein sondern kann auch einfach eine Partition einer lokalen Festplatte sein. Wie könnte man sich für den eigenen Prozess (wenn Nutzername und Passwort bekannt sind) die Rechte für diese Aktion holen?

Luckie 1. Feb 2007 11:54

Re: auf Laufwerk kopieren, auf das User keinen Zugriff hat?
 
Gut, ist es kein Netzlaufwerk, dann geht es so:
http://www.michael-puff.de/Developer...ersonate.shtml

Reinhold_P 1. Feb 2007 13:45

Re: auf Laufwerk kopieren, auf das User keinen Zugriff hat?
 
Ich möchte im folgende die Anforderungen genauer beschreiben, weil sie (zugegeben) ungenau ist:

Es ist ein Netzlaufwerk, auf das der Benutzer keine Rechte hat, aber auf dem er über das Programm Ergebnisdateien ablegen soll.
Er zieht die Dateien in das Programm hinein und das Programm schiebt sie auf dieses Laufwerk.

Möglicher Ablauf:
1. Programm loggt sich auf Netzlaufwerk ein
2. Programm kopiert die Dateien
3. Programm loggt sich vom Netzlaufwerk wieder aus.


Danke für Eure Hinweise.

Reinhold P.

mkinzler 1. Feb 2007 13:50

Re: auf Laufwerk kopieren, auf das User keinen Zugriff hat?
 
Bestehen auf diesem Rechner noch weitere Freigaben? Dann geht es so nicht, da Windows keine mehreren Anmeldungen vom gleichen unter verschiedenen Benutzern zulässt.

kalmi01 1. Feb 2007 14:27

Re: auf Laufwerk kopieren, auf das User keinen Zugriff hat?
 
Hallo Reinhold,
Zitat:

Zitat von Reinhold_P
1. Programm loggt sich auf Netzlaufwerk ein
2. Programm kopiert die Dateien
3. Programm loggt sich vom Netzlaufwerk wieder aus.

so kompliziert muss es garnicht sein.
Dein Prog braucht das Laufwerk nicht mounten, Du kannst auch mit
Zitat:

COPY datei \\anderer_PC\Laufwerk\Pfad\Dateiname
kopieren.
Wenn "Pfad" dann dem Benutzer Zugriffsrechte anbietet, kannst Du sogar kopieren ohne besondere Rechte.
Man kann also auf Sub-Pfade zugreifen, auch wenn die darüberligenden es nicht erlauben würden, sofern die Sub-Pfade selbst es zulassen.
Anderenfalls muss sich Dein Prog Adminrechte holen.

b1zZ 1. Feb 2007 14:40

Re: auf Laufwerk kopieren, auf das User keinen Zugriff hat?
 
Ich hatte auch ein ähnliches Problem und habe es so gelöst.

Laufwerk verbinden:
Delphi-Quellcode:
function Verbinden(Laufwerk: string; Pfad: string; Username: string; Password: string; RestoreAtLogon: Boolean): DWORD;
var
  NetResource: TNetResource;
  dwFlags: DWORD;
begin
  if Laufwerk[length(Laufwerk)] = '\' then
    Laufwerk:=copy(Laufwerk,0,length(Laufwerk) - 1);
   
  if pos(':',Laufwerk) = 0 then
    Laufwerk:= Laufwerk + ':';

  if Pfad[length(Pfad)] = '\' then
    Pfad:=copy(Pfad,0,length(Pfad) - 1);

  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;
Laufwerk trennen:
Delphi-Quellcode:
function Trennen(Laufwerk: string): DWORD;
begin
  if Laufwerk[length(Laufwerk)] = '\' then
    Laufwerk:=copy(Laufwerk,0,length(Laufwerk) - 1);
   
  Result := WNetCancelConnection2(PChar(Laufwerk),0,false);
end;
Denke der Funktionaufruf muss nicht weiter beschrieben werden.

Vielleicht hilft dir das.

Reinhold_P 2. Feb 2007 06:26

Re: auf Laufwerk kopieren, auf das User keinen Zugriff hat?
 
Hallo Michael, hallo b1zZ,

vielen Dank für Eure Hilfe.

Das mit dem

Zitat:

COPY datei \\anderer_PC\Laufwerk\Pfad\Dateiname
sieht am elegantesten aus. Ich weiß allerdings nicht, wie ich den Login da reinpacken kann.

Die zwei Funktionen von blzZ sind ja bereits im Einsatz und werde ich verwenden, da sofort einsatzfähig.
SUPER. Danke. :-D

Gruß
Reinhold


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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