AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Zu geringe Programm-Recht unter Benutzer "Gast" bei XP
Thema durchsuchen
Ansicht
Themen-Optionen

Zu geringe Programm-Recht unter Benutzer "Gast" bei XP

Ein Thema von r29d43 · begonnen am 22. Jan 2008 · letzter Beitrag vom 22. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
r29d43

Registriert seit: 18. Jan 2007
287 Beiträge
 
Delphi 10.4 Sydney
 
#1

Zu geringe Programm-Recht unter Benutzer "Gast" be

  Alt 22. Jan 2008, 09:32
Hi all!


Wie kann ich ein Programm, welches z.B. auch im Kontext des Benutzers "Gast" ausgeführt wird, dazu überreden, in eine Datei zu schreiben, in die "Gast" aber normalerweise nicht reinschreiben darf?


Folgende Situation: Ich schreibe gerade ein Prog welches die LOGONs und LOGOFFs der einzelnen User auf einem PC mitprotokollieren soll. Das Prog entsteht aktuell in diesem Pfad: "C:\Dokumente und Einstellungen\mein Name\Eigene Dateien\Borland Studio-Projekte\ProgrammName\", wird bei jedem Prog-Test also auch von hier aus gestartet. Beim LOGON eines Benutzers wird es über einen Registry-Eintrag im "HKEY_LOCAL_MACHINE\SOFTWARE\........\Run"-Schlüssel mit hochgeladen und macht dann anschließend in einen ..\Data\LogData.Log-File einen entsprechenden Eintrag. Trifft im Prog die wm_EndSession-Message ein, dann schreibt es in diese Datei einen LOGOFF-Eintrag. Soweit erstmal die Hauptaktionen des Progs.

In W2k funktioniert das in genau dieser Konstellation auch bei einem Einloggen eines Benutzers "Gast". In XP allerdings klappt das leider nicht mehr. Schon aus dem Pfad heraus, in dem das Prog compiliert wird, kann es "Gast" mittels des Registry-Eintrages nicht mehr ausführen. Compiliere ich das Ganze z.B. auch mal in "C:\Dokumente und Einstellungen\All Users\Eigene Dateien\Borland Studio-Projekte\ProgrammName\" dann wird das Prog von da zwar ausgeführt, aber es kann diese LogData.Log-Datei nicht beschreiben (wegen eben zu geringer Rechte).


Wie also könnte man dieses Prog rechtemäßig so präparieren, dass es diese Aufgabe aber trotzdem kann?

Oder gibt's eine Möglichkeit, das Prog außerhalb des jeweiligen User-Kontextes laufen zu lassen, quasi immer mit denjenigen Admin-Rechten, mit denen es ja auch ursprünglich installiert wurde?


Irgendwelche Ideen?


Thx schonmal im Voraus.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Zu geringe Programm-Recht unter Benutzer "Gast"

  Alt 22. Jan 2008, 09:37
Zitat von r29d43:
Wie kann ich ein Programm, welches z.B. auch im Kontext des Benutzers "Gast" ausgeführt wird, dazu überreden, in eine Datei zu schreiben, in die "Gast" aber normalerweise nicht reinschreiben darf?
Nö. Das würde ja sonst jeder Wurm auch machen.

Zitat von r29d43:
In W2k funktioniert das in genau dieser Konstellation auch bei einem Einloggen eines Benutzers "Gast".
Dann sind unter W2k die default-rechte wohl etwas lockerer gewesen

Zitat von r29d43:
Wie also könnte man dieses Prog rechtemäßig so präparieren, dass es diese Aufgabe aber trotzdem kann?
An dem Programm kannst du gar nichts machen. Der Admin muss entsprechend die Rechte setzen das die Dateien die von dir benötigt werden auch für den Gast die entsprechenden Rechte hat.

Zitat von r29d43:
Oder gibt's eine Möglichkeit, das Prog außerhalb des jeweiligen User-Kontextes laufen zu lassen, quasi immer mit denjenigen Admin-Rechten, mit denen es ja auch ursprünglich installiert wurde?
Wie wäre es mit einem NT-Dienst?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DasZiesel
DasZiesel

Registriert seit: 26. Dez 2004
Ort: Leipzig
58 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Zu geringe Programm-Recht unter Benutzer "Gast"

  Alt 22. Jan 2008, 09:42
Hiho,

warum eigentlich so kompliziert? Lies doch einfach das LOG der Ereignisanzeige Sicherheit aus. Dort werden, falls aktiviert, alle An- und Abmeldungen protokolliert, sowie die erfoglreichen und nicht erfolgreichen.
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
287 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Zu geringe Programm-Recht unter Benutzer "Gast"

  Alt 22. Jan 2008, 10:04
Zitat von Bernhard Geyer:
Zitat von r29d43:
Oder gibt's eine Möglichkeit, das Prog außerhalb des jeweiligen User-Kontextes laufen zu lassen, quasi immer mit denjenigen Admin-Rechten, mit denen es ja auch ursprünglich installiert wurde?
Wie wäre es mit einem NT-Dienst?
Und ein NT-Dienst könnte genau das? (Minimal hatte ich das zwar schon irgendwo vermutet, allerdings hatte ich mit Diensten bisher noch nichts zu tun). Gut, werde ich mir dann mal etwas genauer angucken


Zitat von DasZiesel:
warum eigentlich so kompliziert? Lies doch einfach das LOG der Ereignisanzeige Sicherheit aus. Dort werden, falls aktiviert, alle An- und Abmeldungen protokolliert, sowie die erfoglreichen und nicht erfolgreichen.
Das wäre zur Not auch noch eine Möglichkeit. Welche Datei muss dazu eigentlich ausgelesen werden. Gibts dafür irgendwo eine Anleitung?
  Mit Zitat antworten Zitat
Benutzerbild von DasZiesel
DasZiesel

Registriert seit: 26. Dez 2004
Ort: Leipzig
58 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Zu geringe Programm-Recht unter Benutzer "Gast"

  Alt 22. Jan 2008, 10:18
Zum Eventlog habe ich was gefunden auf meinem Stick. Keine Ahnung ob dies noch funktioniert und von wem der Source ist. Vielleicht hilft er dir etwas.
Noch etwas, zum auslesen benötigst du Administratorrechte.

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Windows;

const
  BUFFER_SIZE = 1024*128;
// Defines for the READ flags for Eventlogging
  EVENTLOG_SEQUENTIAL_READ = $0001;
  EVENTLOG_SEEK_READ = $0002;
  EVENTLOG_FORWARDS_READ = $0004;
  EVENTLOG_BACKWARDS_READ = $0008;

// The types of events that can be logged.
  EVENTLOG_SUCCESS = $0000;
  EVENTLOG_ERROR_TYPE = $0001;
  EVENTLOG_WARNING_TYPE = $0002;
  EVENTLOG_INFORMATION_TYPE = $0004;
  EVENTLOG_AUDIT_SUCCESS = $0008;
  EVENTLOG_AUDIT_FAILURE = $0010;

// Defines for the WRITE flags used by Auditing for paired events
// These are not implemented in Product 1
  EVENTLOG_START_PAIRED_EVENT = $0001;
  EVENTLOG_END_PAIRED_EVENT = $0002;
  EVENTLOG_END_ALL_PAIRED_EVENTS = $0004;
  EVENTLOG_PAIRED_EVENT_ACTIVE = $0008;
  EVENTLOG_PAIRED_EVENT_INACTIVE = $0010;

  servicekey = 'SYSTEM\CurrentControlSet\Services\Eventlog';

type
//
// Structure that defines the header of the Eventlog record. This is the
// fixed-sized portion before all the variable-length strings, binary
// data and pad bytes.
//
// TimeGenerated is the time it was generated at the client.
// TimeWritten is the time it was put into the log at the server end.
//
  PEVENTLOGRECORD = ^EVENTLOGRECORD;
  EVENTLOGRECORD = packed record
    Length,
      Reserved,
      RecordNumber,
      TimeGenerated,
      TimeWritten,
      EventID: DWORD;
      EventType,
      NumStrings,
      EventCategory,
      ReservedFlags: Word;
      ClosingRecordNumber,
      StringOffset,
      UserSidLength,
      UserSidOffset,
      DataLength,
      DataOffset: DWORD;
  end;
var
  idx: Integer;
  hReg: HKEY;
  readed, needed, oldrec, numrecs, bufsize, err, pos: DWORD;
  ft: FILETIME;
  buffer: array[0..BUFFER_SIZE-1] of char;
  log: THandle;
  elr: EVENTLOGRECORD;
  pelr: PEVENTLOGRECORD;
  begin
  idx := 0;
  err := 128;
  log := OpenEventLog(nil, 'system');
  repeat
  if ReadEventLog(log, EVENTLOG_SEQUENTIAL_READ or EVENTLOG_FORWARDS_READ, err, @buffer, BUFFER_SIZE, readed, needed) then
  begin
   pos := 0;
   repeat
    move (buffer[pos], elr, sizeof(EVENTLOGRecord));
    if (elr.EventType <> 255) then
    begin
     write ('Error = ' );
     case elr.EventType of
      EVENTLOG_ERROR_TYPE: writeln('Error');
      EVENTLOG_WARNING_TYPE: writeln('Warning');
      EVENTLOG_INFORMATION_TYPE: writeln('Information');
      EVENTLOG_AUDIT_SUCCESS: writeln('AUDIT Success');
      EVENTLOG_AUDIT_FAILURE: writeln('AUDIT Failure');
     else
      writeln('Unknow');
     end;
     writeln('Length = ',elr.Length);
     writeln('EventID = ',elr.EventID);
     writeln('String Offset = ',elr.StringOffset);
     writeln('Data Offset = ',elr.DataOffset);
     writeln('Data Length = ',elr.DataLength);
     writeln('NumStrings = ',elr.NumStrings);
     if (elr.NumStrings > 0) then
     begin
      write('String [');
      for idx := elr.StringOffset to elr.DataOffset-1 do
       write(buffer[pos+idx]);
      writeln(']');
     end;

     if (elr.DataLength > 0) then
     begin
      write('Data [');
      for idx := 0 to elr.DataLength-1 do
       write(inttohex(byte(buffer[pos+(elr.DataOffset+idx)]), 2),' ');
      writeln(']');
     end;
    end;
// writeln('Next Entry = ',pos+elr.Length,' (',readed,')');
    inc(pos, elr.Length);
   until (pos >= readed);
   end else begin
    err := GetLastError;
    if (err <> 38) then writeln(SysErrorMessage(err),' (',err,')');
   break;
  end;
  until false;
  CloseEventlog(log);

  readln;
end.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Zu geringe Programm-Recht unter Benutzer "Gast"

  Alt 22. Jan 2008, 10:21
Es gibt eine Anleitung. Du findest sie mit der Suche: Hier im Forum suchenereignisanzeige, Hier im Forum suchenEventLog.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#7

Re: Zu geringe Programm-Recht unter Benutzer "Gast"

  Alt 22. Jan 2008, 15:37
Du könntest auch einfach vorsorglich diese Datei mit Schreibrechten für den Gast ausstatten - z.B. bei einer Installation.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Zu geringe Programm-Recht unter Benutzer "Gast"

  Alt 22. Jan 2008, 15:40
ihr kennt doch bestimmt alle dieses ausführen als, oder? kann man sowas nicht auch mit delphi aufrufen?
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#9

Re: Zu geringe Programm-Recht unter Benutzer "Gast"

  Alt 22. Jan 2008, 15:50
Jup, die Funktion lautet dazu createprocesswithlogonW .
Die Frage ist, warum ein Gastbenutzer diese verwenden soll?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
287 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Zu geringe Programm-Recht unter Benutzer "Gast"

  Alt 22. Jan 2008, 16:38
Thx all for help!


Zitat von Dezipaitor:
Du könntest auch einfach vorsorglich diese Datei mit Schreibrechten für den Gast ausstatten - z.B. bei einer Installation.
Kann man das auch gleich mit einem ganzen Folder machen, bzw. mit dessen dann ganzem Inhalt generell? Denn von diesen da entstehenden Log-Filen wird es ja dann jeden Monat einen neuen geben. Nach welchen Stichworten müsste man suchen, um sich da mal etwas weiter informieren zu können?


Zitat von Larsi:
ihr kennt doch bestimmt alle dieses ausführen als, oder? kann man sowas nicht auch mit delphi aufrufen?
Diese Sachen sind hier imo eher weniger nutzbar, da für diese Funktionen ja auch immer das Passwort dieser anderen Person (unter der ich das Prog dann laufen lassen möchte) nötig ist. Und das kennt das Programm doch nicht, und wird ihm bei der Installation wahrscheinlich auch niemand mitteilen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:05 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