![]() |
NetGroupAddUser
hi leute,
ich bekomme beim aufruf der function "NetGroupAddUser(servername, groupname, userName: PWChar): Integer;stdcall; external 'netapi32.dll';" immer "The Groupname could not be found" als Rückgabewert. Was tun? |
Re: NetGroupAddUser
Moin Steppo,
ich vermute mal, dass Du versucht hast einen User einer lokalen Gruppe hinzuzufügen. NetGroupAddUser ist aber für globale Gruppen zuständig. Probiers mal mit NetLocalGroupAddMembers. |
Re: NetGroupAddUser
Morgen Christian,
Du hast recht! Ich habe versucht einen lokalen User hinzuzufügen. Habe auch schon in diesem Forum nach "NetLocalGroupAddMembers" gesucht und auch gefunden. Komme aber mit den Parametern nicht zurecht. Vor allem wie und wo definiere ich dieses NERR_SUCCESS und die übrigen Rückgabe bzw Übergabeparameter. Dieses NERR_SUCCESS ist doch eine Konstante, oder? Von welchem Typ? Ich lerne es glaub´ ich nie! |
Re: NetGroupAddUser
Moin Steppo,
ein Aufruf wie dieser sollte gehen:
Delphi-Quellcode:
für Nähere Informationen zu den Funktionen usw. kannst Du ja im PSDK bzw. auf MSDN nachsehen.
type
NET_API_STATUS = DWORD; function NetLocalGroupAddMembers(const servername : PWChar;const groupname : PWChar;const buf : pointer;const totalentries : DWORD) : NET_API_STATUS; stdcall; external 'netapi32.dll'; const NERR_SUCCESS = 0; var lgmiWork : LOCALGROUP_MEMBERS_INFO_3; dwResult : DWORD; begin lgmiWork.lgrmi3_domainandname := 'Rechnername\username'; dwResult := NetLocalGroupAddMembers(nil,'Name der lokalen Gruppe',3,@lgmiWork,1); //... Im PSDK könntest Du dann in den Header Dateien auch die Konstanten nachschlagen. Zitat:
|
Re: NetGroupAddUser
Ich muß dich nocheinmal behelligen.
Ich bekomme beim compilieren die Fehlermeldung "LOCALGROUP_MEMBERS_INFO_3" / Undefinierter Bezeichner. Ist das auch Dword? Wenn du lust und zeit hast, würde ich mich sehr freuen, wenn du mir die gesamte Funktion erklärst. Vielleicht ist es mir dann möglich andere API-Funktionen richtig zu übersetzen! Danke für deine bisherige Hilfe! steppo |
Re: NetGroupAddUser
LOCALGROUP_MEMBERS_INFO_3 ist eine Konstante/Variable (edit) oder ein Typ, welche(r) aber in keiner Unit definiert wurde. Wenn du eine Windows API Funktion übersetzten willst, musst du auch alle Structures, Constants usw die von der Funktion verwendet werden mit übersetzen.
Vielleicht haben das die JEDIs aber auch schon erledigt... schau mal auf ![]() |
Re: NetGroupAddUser
Moin Steppo
Delphi-Quellcode:
Du solltest Dir wirklich mal das PSDK zulegen ;-)
type
LOCALGROUP_MEMBERS_INFO_3 = record lgrmi3_domainandname : PWChar; end; @Dani: Wie kommst Du denn auf Konstante? |
Re: NetGroupAddUser
Upsa, stimmt natürlich, dass das auch Typen sein können :oops:
War ein spontaner Gedanke ;-) |
Re: NetGroupAddUser
Danke Christian, habe nachher gesehen, dass es sich um ein Record handeln muß.
(lgmiWork.lgrmi3_domainandname). Was mich etwas verwirrt hat ist, dass in dem Record nur eine Variable deklariert ist. Das ist doch untypisch, da ein Record dann benutzt wird, wenn mann mehrere Werte verschiedener Datentypen zusammenfassen will. Habe aber auch das verstanden. Die anderen Werte, wie LOCALGROUP_MEMBERS_INFO_0 LOCALGROUP_MEMBERS_INFO_1 LOCALGROUP_MEMBERS_INFO_2 brauchen wir garnicht und definieren sie daher auch nicht. Stimmt das alles so? steppo |
Re: NetGroupAddUser
Moin Steppo,
stimmt. Für Level 0 bräuchtest Du die SID (Security ID) des Users, und Level 1 und 2 werden von anderen Funktionen benötigt. Zitat:
Alle diese Netxxx Funktionen, Typen, Konstanten... sind in den LanManager Headern deklariert. Wie Dani schon richtig vermutete gibt es dort fertige Übersetzungen bei den JEDIs. Allerdings verwende ich lieber meine eigenen Übersetzungen (die sich nicht immer mit den anderen vertragen), da bei den JEDIs die borlandtypischen Funktionsdeklarationen mit Var Parametern verwendet werden. Ich halte mich da lieber mehr an die c-typische Deklaration. Zum einen kann man dann auch leichter Samples umsetzen, zum anderen ist es manchmal einfacher die Funktionen der Dokumentation entsprechend zu verwenden. Bei var Parametern kann man nun einmal nicht nil angeben, selbst wenn dies gemäss Dokumentation zulässig wäre. Man muss sich also, bei borlandtypischer Deklaration, manchmal Dummyvariablen anlegen, die man eigentlich nicht braucht. |
Re: NetGroupAddUser
Hi Christian,
habe immer noch einen Fehler der da heißt: "A new member could not be added to or removed from the local group because the member does not exist." Der Benutzer existiert und gehört der Gruppe der "Benutzer" an. Diesen Benutzer möchte ich nun der Gruppe der "Administratoren" hinzufügen. Was mache ich falsch. steppo |
Re: NetGroupAddUser
Moin Steppo,
zeig' doch mal, wie Du es gemacht hast. Normalerweise kommt diese Meldung nur, wenn der User nicht existiert. |
Re: NetGroupAddUser
Delphi-Quellcode:
function NetLocalGroupAddMembers(const servername: PWChar; const groupname:
PWChar; const level: Dword; const buf: pointer; const totalentries: DWORD): NET_API_STATUS; stdcall; external 'netapi32.dll'; procedure Tfrm_Main.RechteVergabe(); type LOCALGROUP_MEMBERS_INFO_3 = record lgrmi3_domainandname: PWChar; end; var lgmiWork: LOCALGROUP_MEMBERS_INFO_3; dwResult: DWord; begin lgmiWork.lgrmi3_domainandname := 'Computername\Peter'; dwResult := NetLocalGroupAddMembers(nil, 'Administratoren', 3, @lgmiWork, 1); if dwResult <> 0 then ShowMessage(FehlerdiagnoseNetzwerk(dwResult) + inttostr(dwResult)) else ShowMessage('User zur Gruppe der Administratoren hinzugefügt'); end;
Delphi-Quellcode:
procedure Tfrm_Main.cmd_StartClick(Sender: TObject);
begin EingabeCheck; ComputerNameAendern; SaveRegString; DomaenenBeitritt; RechteVergabe; end; |
Re: NetGroupAddUser
Moin Steppo,
versteh' ich nicht. Versuch' mal nur den User anzugeben. Auf dem lokalen Rechner funktioniert das auch so. |
Re: NetGroupAddUser
Danke Christian.
es funktioniert hervorragend! steppo |
Re: NetGroupAddUser
Moin Steppo,
ist nur seltsam, dass es bei Dir nicht mit Angabe des Rechnernamens funktioniert hat. Das ging bei mir nämlich auch problemlos. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 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