Rechte für NetShareAdd [WinAPI/C++]

Daniel Toplak

Erfahrenes Mitglied
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
 
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.
 
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
 
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!
 
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
 
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.
 
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
 
Zurück