Autor Beitrag
ThomasEi
Hält's aus hier
Beiträge: 7

WinXP Pro SP3 & Win7
... D2005 Pro / D2010 Pro
BeitragVerfasst: Sa 06.09.08 07:38 
Hallo,

ich spiele etwas mit 'MPuNTUser.pas' herum, um mich mit dem Thema Benutzerveraltung vertraut zu machen.
Die Unit von "Michael Puff" (www.michael-puff.de) ist da ein ganz hilfreicher Einstieg.

Ich habe ein WinXP prof. mit D2005 prof. und bin als Admin angemeldet.

Damit lege ich einen User an, das klappt wunderbar ohne Problem:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
ups := AddUser(compname, Edit3.Text, Edit4.Text); //Edit3.Text=Username, Edit4.Text=Passwort
Meldungsmemo.Lines.Add(NetErrorStr(ups));
ups := AddToGroup(compname, Edit3.Text, 'Benutzer');
Meldungsmemo.Lines.Add(NetErrorStr(ups));

Doch wenn ich versuche diesen User wieder aus einer Gruppe zu entfernen:
ausblenden Delphi-Quelltext
1:
2:
ups := RemoveFromGroup(compname, Edit3.Text, 'Benutzer');
Meldungsmemo.Lines.Add(NetErrorStr(ups));

Bekomme ich "Fehlercode 1387: Benutzer existiert nicht" zurück.

Was mache ich falsch?

Thomas

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 06.09.08 08:26 
user profile iconThomasEi hat folgendes geschrieben:
Was mache ich falsch?

Du benutzt keine Delphi-Tags. Dadurch wird dein Quelltext unlesbar ;)

Deinen Quelltext packst du am besten in <span class="inlineSyntax"><span class="codecomment">{PROTECTTAG114227ce9778776bee31ee115abf0eac}</span></span> Einzelne Stellen markierst du mit dem Highlight-Tag: [highlight ] markierte Stelle [/highlight]

mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 06.09.08 11:44 
user profile iconThomasEi hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
ups := RemoveFromGroup(compname, Edit3.Text, 'Benutzer');
Meldungsmemo.Lines.Add(NetErrorStr(ups));

Wird der Benutzer dann auch nicht aus der Gruppe entfernt oder was passiert? Generell sollte man den Rückgabewert einer API-Funktion nur dann abrufen, wenn die Funktion fehlgeschlagen ist, da ansonsten der Wert von GetLastError usw. unbestimmt ist.
ThomasEi Threadstarter
Hält's aus hier
Beiträge: 7

WinXP Pro SP3 & Win7
... D2005 Pro / D2010 Pro
BeitragVerfasst: Sa 06.09.08 20:24 
Nein, leider wird der Benutzer nicht aus der Gruppe entfernt.

Thomas
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 06.09.08 23:37 
Versuch es mal mit WideStrings. Alle Funktionen in denen Zeichenketten als Parameter vorkommen sind in meiner Unit WideStrings.
ThomasEi Threadstarter
Hält's aus hier
Beiträge: 7

WinXP Pro SP3 & Win7
... D2005 Pro / D2010 Pro
BeitragVerfasst: So 07.09.08 00:10 
Hallo Luckie,

habe den Fehler gefunden, in der "MPuNTUser.pas"

Funktion die bei mir nicht funktioniert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
function RemoveFromGroup(const Server, User, Group: WideString): NET_API_STATUS;
...
      Member.lgrmi3_domainandname := PWideChar(copy(Server, 3, length(Server)) + '\' + User);
...
end;

Im COPY wird erst an der 3. Stelle der PC-Name übernommen.
Richtiger währe und so funktioniert es bei mir, ab der 0. Stelle.

Funktion die bei mir funktioniert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
function RemoveFromGroup(const Server, User, Group: WideString): NET_API_STATUS;
...
      Member.lgrmi3_domainandname := PWideChar(copy(Server, 0, length(Server)) + '\' + User);
...
end;

Danke für die Unterstützung und ein schönes Wochenende noch.

Thomas
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 07.09.08 00:24 
Das ist kein Fehler. Du musst nur "\\" vor den Rechnernamen setzen. Das hatte ich so gemacht, weil ich irgendwie alle Rechnernamen so bekommen habe von einer anderen Funktion. Wollte man es wasserdicht machen, müsste man abfragen, zwei Bbackslashes vor dem Rechnernamen stehen oder nicht.

Trotzdem solltest du mit WideStrings arbeiten, da alle Funktionen Unicode sind.
ThomasEi Threadstarter
Hält's aus hier
Beiträge: 7

WinXP Pro SP3 & Win7
... D2005 Pro / D2010 Pro
BeitragVerfasst: So 07.09.08 00:35 
Hallo Luckie,

Entschultigung, selbstverständliche ist dies kein Fehler der Unit, sondern er liegt eindeutig bei mir.
Da ich nun weis warum die Funktion bei mir nicht gearbeitet hatte und Dank Deines Hinweises mit den
zwei Backslashes "\\" kann ich die Abfragen/Eingabe des Computernames verbessern.

Danke

Thomas