AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi direktes kopieren auf Netzlwaufwerk verhindern

direktes kopieren auf Netzlwaufwerk verhindern

Ein Thema von zeras · begonnen am 17. Aug 2014 · letzter Beitrag vom 8. Sep 2019
Antwort Antwort
Seite 1 von 2  1 2   
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.654 Beiträge
 
Delphi 12 Athens
 
#1

AW: direktes kopieren auf Netzlwaufwerk verhindern

  Alt 17. Aug 2014, 15:15
...
und das Programm unter einem anderen Usercontext laufen lassen, mit dem es dann auch schreibrechte hat.
Oder zur Laufzeit ein Netzlaufwerk mit anderer Useranmeldung verbinden, Daten schreiben und dann wieder trennen.
Das ist offensichtlich das, was mir unsere IT versuchte, klarzumachen. Nur weiß ich nicht, wie ich das anstellen kann.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#2

AW: direktes kopieren auf Netzlwaufwerk verhindern

  Alt 17. Aug 2014, 15:24
Du könntest dir von der IT einen User mit schreibrechten einrichten lassen.

Dann teilst du dein Programm in 2 Teile. Teil 1 übernimmt das sammeln und Zippen der Daten z.b. im Temp-Verzeichnis.
Dann rufst das 2. Prog auf, und übergibst als Parameter die gezippte Datei incl. Pfad. Du startest dieses 2. Prog aber unter einem anderen Benutzer. Wie das geht: z.B. hierhttp://www.delphipraxis.net/176005-a...r-starten.html

Ab Vista kannst du ggf. auch dein Programm über die Verknüpfung gleich als anderer Benutzer starten lassen, aber ich weiß nicht, ob dann nicht immer das Kennwort abgefragt wird (ich glaube aber schon).
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.654 Beiträge
 
Delphi 12 Athens
 
#3

AW: direktes kopieren auf Netzlwaufwerk verhindern

  Alt 17. Aug 2014, 15:50
Du könntest dir von der IT einen User mit schreibrechten einrichten lassen.

Dann teilst du dein Programm in 2 Teile. Teil 1 übernimmt das sammeln und Zippen der Daten z.b. im Temp-Verzeichnis.
Dann rufst das 2. Prog auf, und übergibst als Parameter die gezippte Datei incl. Pfad. Du startest dieses 2. Prog aber unter einem anderen Benutzer. Wie das geht: z.B. hierhttp://www.delphipraxis.net/176005-a...r-starten.html

Ab Vista kannst du ggf. auch dein Programm über die Verknüpfung gleich als anderer Benutzer starten lassen, aber ich weiß nicht, ob dann nicht immer das Kennwort abgefragt wird (ich glaube aber schon).
Damit sollte ich erst mal klarkommen. Vielen Dank.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.077 Beiträge
 
Delphi 12 Athens
 
#4

AW: direktes kopieren auf Netzlwaufwerk verhindern

  Alt 17. Aug 2014, 16:25
Ich würde das ganze mit dem Starten als anderer Benutzer sein lassen. Es genügt, wenn du einen Dienst schreibst, der das übernimmt und den so konfigurierst, dass er als anderer Benutzer läuft (der, der die Rechte hat). Das sollte über die Softwareverteilung klappen, sofern es eine gibt, oder ansonsten mit einem Aufruf der sc.exe mit Adminrechten erledigt sein. Du brauchst dann nur den Dienst per IPC steuern.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#5

AW: direktes kopieren auf Netzlwaufwerk verhindern

  Alt 17. Aug 2014, 17:56
Ich würde das ganze mit dem Starten als anderer Benutzer sein lassen. Es genügt, wenn du einen Dienst schreibst, der das übernimmt und den so konfigurierst, dass er als anderer Benutzer läuft (der, der die Rechte hat). Das sollte über die Softwareverteilung klappen, sofern es eine gibt, oder ansonsten mit einem Aufruf der sc.exe mit Adminrechten erledigt sein. Du brauchst dann nur den Dienst per IPC steuern.
Geht natürlich auch.
Aber wenn ich den TE richtig verstanden habe, dann wird das Speichern nur in großen Abständen durchgeführt. Dazu immer einen Dienst laufen lassen, der Ewigkeiten nutzlos Rechenzeit verbraucht?
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.654 Beiträge
 
Delphi 12 Athens
 
#6

AW: direktes kopieren auf Netzlwaufwerk verhindern

  Alt 17. Aug 2014, 18:56
Aber wenn ich den TE richtig verstanden habe, dann wird das Speichern nur in großen Abständen durchgeführt. Dazu immer einen Dienst laufen lassen, der Ewigkeiten nutzlos Rechenzeit verbraucht?
Im Durchschnitt werden pro Tag ca. 20-30 Dateien pro Tag auf den Server kopiert. Heruntergeladen wird aber mehr. Ob da ein Dienst Sinn macht, weiß ich nicht. Wie schon geschrieben, sind das um die 8 User mit teilweise 2 Rechnern pro User.

Umgehen kann man das nur durch einen Trick.
- der normale User verbindet sich ReadOnly mit dem UNC Pfad "\\Server\ArchiveShare"
- Das Programm nimmt anstatt des Servernamens die Server IP "\\192.168.0.10\ArchiveShare" um sich schreibend zu authentifizieren

SMB ist zum Glück so "dumm", dass es nicht prüft ob es sich bei "Server" und "192.168.0.10" um das gleiche Ziel handelt.
Danke für die Info. Das müsste ich dann noch beachten, wenn ich diese Lösung nutzen würde.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#7

AW: direktes kopieren auf Netzlwaufwerk verhindern

  Alt 18. Aug 2014, 00:14
Dazu immer einen Dienst laufen lassen, der Ewigkeiten nutzlos Rechenzeit verbraucht?
Man kann natürlich Programme so schreiben, daß sie das nicht machen.

- Das Programm belegt nur wenig Arbeitsspeicher und/oder es kann problemlos der Speicher ausgelagert werden (PageFile).
- Das Programm guckt nicht sändig sinnlos nach, ob was da ist, sonder lässt sich darüber Informieren (Verzeichnisüberwachung registrieren) und legt sich dazwischen schlafen bis eines der Events reinkommt (es ist was in der Messageloop oder die Überwachung hat was gemeldet), areitet das Ereignis ab und schläft dann weider.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

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

AW: direktes kopieren auf Netzlwaufwerk verhindern

  Alt 18. Aug 2014, 07:39
Und warum wird nicht einfach das Recht zum Browsen für das Verzeichnis entzogen ? So kann jeder User immer noch schreiben und lesen, kann sich aber den Inhalt im Explorer nicht mehr anschauen. Damit bräuchte man keine zweite Anmeldung.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
440 Beiträge
 
#9

AW: direktes kopieren auf Netzlwaufwerk verhindern

  Alt 18. Aug 2014, 07:41
@jensw_2000
Der Trick der hier geplant ist, ist aber, eben nicht die gleiche User-Session zu benutzen, sondern eine neue Session aufzumachen (entweder in Form eines Dienstes, oder als zweiten Prozess, der sich am Client-Rechner unter einem anderen Useraccount anmeldet). Deswegen kommen die genanten Einschränkungen hier nicht zum Tragen.
Ich persönlich würde den Aufwand eines zweiten Prozesses und der Interprocesskommunikation eher vermeiden und stattdessen den Vorschlag von jfheins aufgreifen und ein anderes Netzwerkprotokoll wählen.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: direktes kopieren auf Netzlwaufwerk verhindern

  Alt 17. Aug 2014, 16:42
Der übliche Weg, eine Verbindung zu einem Netztwerkpfad unter einem anderen Benutzer zu erstellen ist eigentlich WNetAddConnection2. Eine Lösung könnte in etwa so aussehen:

Delphi-Quellcode:
const
  cLocalName = 'N:'; // oder ein anderer verfügbarer Buchstabe
var
  data: TNetResource;
  res: Cardinal;
begin
  data.dwType := RESOURCETYPE_DISK;
  data.lpLocalName := cLocalName ;
  data.lpRemoteName := <Der Netzwerkpfad>;
  data.lpProvider := '';
  res := WNetAddConnection2(data, <Das Passwort>, <Der Username>, CONNECT_TEMPORARY);

  if res = NOERROR then begin
    try
      <Mach was immer nötig ist>
    finally
      res := WNetCancelConnection2(cLocalName , 0, false);
    end;
  end
  else begin
    <Fehlerbehandlung>
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:43 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