Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Datei kopieren unter NT rechte ?! (https://www.delphipraxis.net/94384-datei-kopieren-unter-nt-rechte.html)

ghost007 20. Jun 2007 18:44


Datei kopieren unter NT rechte ?!
 
Hallo,
ich will mit meinem programm dateien unter NT kopieren.
Ich bin als admin auf dem rechner angemeldet, jedoch gibt es einige ordner, in die nur die user reindürfen.
Nun meine frage:
Kann ich die rechte irgendwie erwerden? (ich will nichts verändern sondern nur was kopieren)
oder
Kann ich irgendwie feststellen ob ich (als admin) für den ordner x genügend rechte hab um ihn kopieren zu können?

MfG - Ghost007

P.S.:
zum kopieren verwende ich folgende funktion:
Delphi-Quellcode:
procedure TForm1.CopyFile(filepath, destination :string);
var
  f,t:file of byte;
  buf:array[1..4096] of byte;
  read:integer;
begin
  assignfile(f,filepath);
  assignfile(t,destination);
  reset(f);
  rewrite(t);
  while not eof(f) do begin
    blockread(f,buf,length(buf),read);
    blockwrite(t,buf,read);
    ProgressBar1.position:=round(100*filesize(t)/filesize(f));
    application.processmessages;
  end;
  closefile(f);
  closefile(t);
end;
//Edit:
Kann ich durch
Delphi-Quellcode:
try
 assignfile(f,filepath);
except
 //keine rechte
end;
oder so des irgendwie testen?

Luckie 20. Jun 2007 21:39

Re: Datei kopieren unter NT rechte ?!
 
Damit kannst du pürfen, ob du genügend Rechte hast in das Verzeichnis zu schreiben:
http://www.michael-puff.de/Developer...ileAccess.html

ghost007 20. Jun 2007 22:51

Re: Datei kopieren unter NT rechte ?!
 
danke, werd das mal ausprobieren ;)

MfG - Ghost007

ghost007 21. Jun 2007 15:08

Re: Datei kopieren unter NT rechte ?!
 
funktioniert wunderbar, danke :)

MfG - Ghost007

ghost007 2. Jul 2007 19:58

Re: Datei kopieren unter NT rechte ?!
 
Hallo nochmal,
luckie ich hab nun deinen code in der praxis (bei meinem dad) ausprobiert. Leider bekomme ich nicht das gewünschte ergebnis.
Folgedes liegt vor:
Eine listbox mit datei pfaden.
Nun will ich die dateipfadeinträge entfernen, zu denen ich keinen access hab.
Das hab ich mir wie folgt vorgestellt:

Delphi-Quellcode:
for i:=ListBox1.Items.Count-1 downto 0 do
 begin
  if CheckAccessToFile(GENERIC_WRITE,ListBox1.Items.Strings[i]) = false then
   begin
    ListBox1.Items.Delete(i);
   end;
 end;
jedoch wird kein eintrag gelöscht. Dementsprechend bekomme ich auch bei dem versuch eine acces denied datei zu kopieren einen "Access denied" error.

Nun meine frage, mach ich beim aufrufen deiner funktion irgend nen fehler?
Oder woran kann es dann liegen.

MfG - Ghost007

P.S.:Betriebssystem: Windows NT User: hat adminrechte (es gibt aber ordner, in die nur leute im netzwerk reindürfen, nichtmal der admin darf da rein, diese order müssen aus der obigen listbox entfert werden)

SirThornberry 2. Jul 2007 20:03

Re: Datei kopieren unter NT rechte ?!
 
Zitat:

Nun will ich die dateipfadeinträge entfernen, zu denen ich keinen access hab.
Du kannst nur etwas entfernen wenn du dazu die rechte hast!

DeddyH 2. Jul 2007 20:21

Re: Datei kopieren unter NT rechte ?!
 
Ich glaube, er meinte mit Entfernen das Löschen aus seiner Listbox.

ghost007 2. Jul 2007 20:32

Re: Datei kopieren unter NT rechte ?!
 
genau,
ich lösche die dateie pfade aus der listbox

MfG - Ghost007

DeddyH 2. Jul 2007 20:40

Re: Datei kopieren unter NT rechte ?!
 
Wie sehen die Einträge denn aus?

ghost007 2. Jul 2007 20:49

Re: Datei kopieren unter NT rechte ?!
 
ja,
z.b. C:/programme/dingens/main.exe

MfG - Ghost007

DeddyH 2. Jul 2007 20:58

Re: Datei kopieren unter NT rechte ?!
 
Hm... da kann ich keinen Fehler erkennen, ich hatte jetzt relative Pfade vermutet.

ghost007 2. Jul 2007 21:04

Re: Datei kopieren unter NT rechte ?!
 
wie gesagt, ich muss festellen, ob ich die datei in dem pfad mit dem code in post #1 kopieren kann.

MfG - Ghost007

ghost007 4. Jul 2007 11:28

Re: Datei kopieren unter NT rechte ?!
 
*push*

scrat1979 4. Jul 2007 12:25

Re: Datei kopieren unter NT rechte ?!
 
Hallo!

Versuche mal Deine Schleife ohne den Check (also einfach nur LIstbox1.Items.Delete(i). Sie sollte die Einträge der Listbox1 komplett löschen - der Code sieht korrekt aus.
Wenn es funktioniert muss es irgend etwas mit der Funktion an sich zu tun haben. Das Löschen der Listbox-Einträge ist sicherlich NICHT von den Zugriffsrechten abhängig, solange Du auf die eigentlichen Dateien nicht zugreifst...

Du könntest mal Deinen angesprochenen Fehler (Meldung) posten. Evtl. bringt uns das weiter...

SCRaT

//Edit

Ist die entsprechende Listbox vor Aufruf der Schleife mit Einträgen gefüllt? Falls nein, dann könnte der Fehler "weiter oben" in Deinem Programm die Ursache sein. (z.B. Showmessage genau eine Zeile vor die Schleife setzen -> bis zum Showmessage darf dann kein Fehler erscheinen. Ein zweites Showmessage nach der Schleife verrät Dir, ob Du die Schleife ohne Fehler komplett durchlaufen kannst. Damit kannst Du den Fehler weiter eingrenzen)

ghost007 4. Jul 2007 17:29

Re: Datei kopieren unter NT rechte ?!
 
Es kommt kein fehler, das irwas mit den listbox items is oder so.
Es kommt der fehler erst beim kopieren.
Und zwar kommt ein access denied error.

MfG - Ghost007

scrat1979 4. Jul 2007 17:57

Re: Datei kopieren unter NT rechte ?!
 
Hmmm, ich glaub ich bin mit meiner Antwort im falschen Thread gelandet - Sorry.

SCRaT

ghost007 4. Jul 2007 19:58

Re: Datei kopieren unter NT rechte ?!
 
Macht nix, aber evtl kannste mir ja trotzdem weiterhelfen? ^^

MfG - Ghost007

ghost007 5. Jul 2007 22:01

Re: Datei kopieren unter NT rechte ?!
 
*PUSH*#2

scrat1979 5. Jul 2007 22:18

Re: Datei kopieren unter NT rechte ?!
 
Zitat:

Zitat von ghost007
Macht nix, aber evtl kannste mir ja trotzdem weiterhelfen? ^^

MfG - Ghost007

Hmmm, hätte nur noch einen Lösungsvorschlag. Vor dem Kopieren der Datei kann damit geprüft werden, ob in das Zielverzeichnis geschrieben werden kann. Vielleicht hilft es Dir ja :thumb:

Delphi-Quellcode:
Function DirWritable(DestDir : String) : Boolean;
var
 TestDatei : TFileStream;
Begin
  DestDir := IncludeTrailingPathDelimiter(DestDir); // '\' am Ende des Pfades sicherstellen...
  Result := False;
  Try
    TestDatei := TFileStream.Create(DestDir+'dummy.tmp', fmCreate);
    Result := True;
    TestDatei.Free;
    DeleteFile(DestDir+'dummy.tmp'); // Datei wieder löschen...
  Except
  End; {Try..Except}
End; { Function }
Aufruf z.B. mit
Delphi-Quellcode:
if DirWritable(Listbox1[5]) Then ShowMessage('Hier kann reingeschrieben werden!')
Else ShowMessage('Zugriff verweigert!');
Ungetestet. Vielleicht hilft Dir das aber etwas weiter...

SCRaT

ghost007 5. Jul 2007 23:21

Re: Datei kopieren unter NT rechte ?!
 
hm ... das is ja schön und gut, aber ich will wissen, ob ich genug rechte hab die quelle zu lesen/öffnen.

MfG - Ghost007

P.S.:Trotzdem danke ;)

Luckie 5. Jul 2007 23:23

Re: Datei kopieren unter NT rechte ?!
 
Dazu habe ich dir doch Code im zweiten Beitrag gepostet.

scrat1979 6. Jul 2007 11:17

Re: Datei kopieren unter NT rechte ?!
 
Zitat:

Zitat von Luckie
Dazu habe ich dir doch Code im zweiten Beitrag gepostet.

Habe es auch so gelesen, daß es damit funktioniert hat?!? :gruebel:

An sonsten ändere meine Funktion etwas ab:

Delphi-Quellcode:
Function FileAccessable(Dateiname : String) : Boolean;
var
TestDatei : TFileStream;
Begin
  Result := False;
  Try
    TestDatei := TFileStream.Create(Dateiname, fmOpenRead or fmShareDenyNone);
    Result := True;
    TestDatei.Free;
  Except
  End; {Try..Except}
End; { Function }
durch

Eventuell wird ja die Exception auch ausgelöst wenn Du versuchst die Datei mit dieser Funktion zum Lesen zu öffnen. Dabei unterscheidet diese Funktion natürlich nicht, warum die Datei nicht geöffnet werden kann (Rechte, Existenz etc.). Müsstest evtl. halt die Funktion ausbauen - falls es überhaupt interessiert, warum sie nicht gelesen werden kann. Stichwort FileExists(...) könnte z.B. innerhalb der Funktion prüfen, ob die Datei überhaupt (noch) existiert.



Sonst sag uns doch, warum Luckies Code von oben jetzt nicht (mehr?) funzt oder was Dein jetztiges Problem von Deinem Problem, das von Luckie (anscheinend) schon gelöst wurde, unterscheidet. Dann können wir Dir bestimmt weiterhelfen! :thumb:

SCRaT

ghost007 6. Jul 2007 13:16

Re: Datei kopieren unter NT rechte ?!
 
hi,
ich hatte den code daheim auf meinem XP PC getestet, und dann bei meinem dad inner firma, dort hat er nicht mehr funktioniert.
Ich bin die liste der paths durchgegeangen und hab jeden mit dem code von luckie gecheckt, jedoch hab ich dann beim kopieren trotzdem einen access denied error bekommen :(

MfG - Ghost007

scrat1979 6. Jul 2007 16:46

Re: Datei kopieren unter NT rechte ?!
 
Okay, jetzt habe ich das Problem verstanden. Hast es auch schon weiter oben geschrieben - Sorry, muss ich überlesen haben...

Und wie sieht es mit meinem letzten Post aus? Geht auch nicht? :zwinker:

SCRaT

ghost007 6. Jul 2007 18:04

Re: Datei kopieren unter NT rechte ?!
 
also,
bei mir funktioniert dein letzter post, muss morgen mal bei meim dad testen ;)

MfG - Ghost007

P.S.:Danke :)

scrat1979 6. Jul 2007 18:49

Re: Datei kopieren unter NT rechte ?!
 
Das freut mich (vorerst) mal :-)

Gib aber bescheid, interessiert mich natürlich auch. So long... :thumb:

SCRaT

ghost007 2. Nov 2007 19:09

Re: Datei kopieren unter NT rechte ?!
 
Hi,

hab das projekt nun schon beerdigt. es is einfacher wenn man das mit ner bandsicherung macht.
da es dich awa interessiert ob es so funktioniert.
nein tut es nicht :evil:

MfG - Ghost007


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