tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
895
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    Ich habe folgendes Problem:

    Meine Anwendung erstellt mit Hilfe von NetShareAdd() remote eine Freigabe auf einem Anderen Rechner, damit ich dort Dateien draufkopieren kann.
    Wenn meine Anwendung jetzt allerdings unter einem unzureichenden Benutzerkontex läuft (z.B. normaler Benutzer nicht Admin), dann erhalte ich von NetShareAdd() als Returnwert bekomme ich ERROR_ACCESS_DENIED, was ja in diesem Falle auch richtig ist.

    Jetzt meine Frage:

    Mit welcher Möglichkeit finde ich heraus, ob der verwendete Benutzer (über das Token des Prozesses) die Rechte besitzt oder nicht, bzw. welche Rechte werde für NetShareAdd() benötigt?

    Ich hoffe daß mir hier jemand helfen kann.

    Gruß Homer
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter

  2. #2
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Ich habe auch schon mal eine Methode gesucht, ob der aktuell angemeldete Benutzer Admin-Rechte hat, aber wurde nicht fündig.

    Microsoft selbst sagt in der Knowledgebase, man sollte doch einfach eine Funktion, die Admin-Rechte benötigt, aufrufen und dann erkennt man ja, ob es geht oder nicht.

    Anhand deines NetAddShare-Aufrufes erkennst du ja bereits, ob der User berechtigt ist oder nicht.

    Ob für NetAddShare Admin-Rechte benötigt werden, oder ob weniger Rechte ausreichen, kann ich dir allerdings auch nicht sagen.
     

  3. #3
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    Microsoft selbst sagt in der Knowledgebase, man sollte doch einfach eine Funktion, die Admin-Rechte benötigt, aufrufen und dann erkennt man ja, ob es geht oder nicht.
    Solche Aussagen hab ich auch schon gefunden, aber sorry, das is ja wohl keine schöne Lösung. (is nicht gegen dich, schon klar ne).
    Ich denke ich werde auch deine Idee verfolgen und werde einfach abprüfen, ob der User Adminrechte hat, ich muss nur noch genau herausfinden, welches Privileg dafür verantworlich ist.
    Ob für NetAddShare Admin-Rechte benötigt werden, oder ob weniger Rechte ausreichen, kann ich dir allerdings auch nicht sagen.
    Das herauszufinden wäre natrülich die eleganteste Lösung, denn ich habe noch mehr solche calls (nicht nur NetShareAdd) und ich mag irgendwie die Devise nicht: "nimm den Admin der darf's" das ist irgendwo nicht mehr Zeitgemäß, denn ich habe es leider mit Kundenumgebungen zu tun, wo das Privileg eines Administrators nicht so einfach zu erhalten ist.

    Wenn ich was herausfinde, dann werde ich das hier noch posten, allerdings kann das auch bis nächste Woche dauern.

    Gruß Homer
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter

  4. #4
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Original geschrieben von Daniel Toplak
    Solche Aussagen hab ich auch schon gefunden, aber sorry, das is ja wohl keine schöne Lösung. (is nicht gegen dich, schon klar ne).

    --snip--
    Ja, ich hab zur Zeit auch davon Abstand genommen. Ist wirklich keine feine Idee. Vor allem, wenn man dann, falls es geklappt hat, die Funktion gar nicht ausgeführt haben möchte. Falls du was Feines findest, um einen Admin zu erkennen, bitte hier posten!
     

  5. #5
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    So bin noch an der Sache dran, für dich wäre wichtig, auf welchem Bertriebssystem soll das laufen?
    Und was nutzt du? VC++ 6 oder 7 (.NET)?
    Denn wenn es dir reicht, daß das erst ab Win2000 lauffähig ist und du VC++ 7 hast und du die ganze geschichte nur lokal brauchst, dann hab ich für dich eine Lösung: CheckTokenMembership .
    In allen anderen Fällen, sieht es noch schlecht aus.
    Ich brauche:
    - lauffähig ab NT4
    - übersetzbar mit VC++ 6
    - das Ganze remote prüfbar in einem Client/Server-Netzwerk (mit Domain-Controller) und in einem Peer - to - Peer Netz.


    Gruß Homer
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter

  6. #6
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Ich hasse das auch, wenn man irgendwas schönes findet, und dann feststellt dass das nur mit Windows 98SE++, oder 2000++, optional noch mit ServicePack X und IE Version Y läuft.

    Würde PrivilegeCheck funktionieren? Das ist seit NT 3.51 drin. Da müsste man dann wieder nur die einzelnen Privileges wissen.
     

  7. #7
    Registriert seit
    Jan 2002
    Ort
    Bayern
    Beiträge
    1.390
    Das könnte was helfen, aber nicht in meinem Fall
    Denn ich muss ja wissen, ob ich die entspr. Rechte auch remote habe.

    Gruß Homer
     
    we would change the world if god gave us the source code...
    and remember, science is nothing more than reverse engineering nature...

    Current projects:
    - LdrawConverter

Ähnliche Themen

  1. WinAPI
    Von 3Cyb3r im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 15.12.08, 16:55
  2. WinApi-Programmierung
    Von going im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 12.12.08, 09:17
  3. WinAPI
    Von Simsi1277 im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 20.11.07, 22:14
  4. Winapi Dll
    Von gajahputih im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 28.05.07, 19:56
  5. WinApi und c++
    Von js-mueller im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 16.10.03, 20:53