Server 2008 BUG in Active Directory Benutzer und Gruppen?

13/11/2008 - 14:07 von Bernhard Hobiger | Report spam
Ich habe ein Programm zum Verwalten von UserAccounts, das schon seit 5 Jahren
unter Server 2003 làuft. Im Programm verwende ich WTSSetUserConfig() um die
Berechtigung zum Anmelden an TerminalServern zu setzen.

Unter Server 2003 heißt die Checkbox in AD Benutzer und Gruppen
"Anmeldeberechtigung für diesen Benutzer für alle Terminalserver verweigern".
WTSUserConfigfAllowLogonTerminalServer mit Parameter 0 setzt diese Checkbox,
mit Parameter 1 löscht diese Ceckbox (klingt auch logisch).

Unter Server 2008 (64bit) heißt die Checkbox auf einmal "Terminalserver
Anmeldung zulassen", sie verhàlt sich aber immer noch gleich wie unter Server
2003, obwohl die Logik ja umgedreht sein müsste. Parameter 0 setzt sie,
Parameter 1 löscht sie.

Hat hier jemand die Checkbox falsch benannt oder wurde die Logik tatsàchlich
geàndert und WTSSetUserConfig() nicht angepasst?

lg
Bernhard

Testprogramm:

#include <stdio.h>
#include <windows.h>

#include "wtsapi32.h"

void main(int argc, char ** argv)
{
char *server = "DC0002A";
char *samAccountName = "bhobiger";
int allowTSLogon = 0;

void *buffer;
int bufferSize = -1;

int ret = WTSSetUserConfig(server, samAccountName,
WTSUserConfigfAllowLogonTerminalServer,
(char *)(&allowTSLogon),
sizeof(allowTSLogon));
if (ret == 0)
{
printf("Error setting AllowLogon: %d", GetLastError());
}

ret = WTSQueryUserConfig(server, samAccountName,
WTSUserConfigfAllowLogonTerminalServer,
(char **)&buffer, &bufferSize);
if (ret == 0)
{
printf("Error setting AllowLogon: %d", GetLastError());
}
else
{
memcpy(&allowTSLogon, buffer, 4);
WTSFreeMemory(buffer);
printf("WTSQueryUserConfig(): %d", allowTSLogon);
}
}
 

Lesen sie die antworten

#1 Wolfgang Viehmann
18/11/2008 - 14:43 | Warnen spam
Hallo Bernhard,

wie heißt den das Programm das du verwendest?

Eigentlich wàre ja der Hersteller des Programms der richtige Addressat für
deine Frage.

Wolfgang Viehmann
(Wolle)
"Bernhard Hobiger" wrote in
message news:
Ich habe ein Programm zum Verwalten von UserAccounts, das schon seit 5
Jahren
unter Server 2003 làuft. Im Programm verwende ich WTSSetUserConfig() um
die
Berechtigung zum Anmelden an TerminalServern zu setzen.

Unter Server 2003 heißt die Checkbox in AD Benutzer und Gruppen
"Anmeldeberechtigung für diesen Benutzer für alle Terminalserver
verweigern".
WTSUserConfigfAllowLogonTerminalServer mit Parameter 0 setzt diese
Checkbox,
mit Parameter 1 löscht diese Ceckbox (klingt auch logisch).

Unter Server 2008 (64bit) heißt die Checkbox auf einmal "Terminalserver
Anmeldung zulassen", sie verhàlt sich aber immer noch gleich wie unter
Server
2003, obwohl die Logik ja umgedreht sein müsste. Parameter 0 setzt sie,
Parameter 1 löscht sie.

Hat hier jemand die Checkbox falsch benannt oder wurde die Logik
tatsàchlich
geàndert und WTSSetUserConfig() nicht angepasst?

lg
Bernhard

Testprogramm:

#include <stdio.h>
#include <windows.h>

#include "wtsapi32.h"

void main(int argc, char ** argv)
{
char *server = "DC0002A";
char *samAccountName = "bhobiger";
int allowTSLogon = 0;

void *buffer;
int bufferSize = -1;

int ret = WTSSetUserConfig(server, samAccountName,
WTSUserConfigfAllowLogonTerminalServer,
(char *)(&allowTSLogon),
sizeof(allowTSLogon));
if (ret == 0)
{
printf("Error setting AllowLogon: %d", GetLastError());
}

ret = WTSQueryUserConfig(server, samAccountName,
WTSUserConfigfAllowLogonTerminalServer,
(char **)&buffer, &bufferSize);
if (ret == 0)
{
printf("Error setting AllowLogon: %d", GetLastError());
}
else
{
memcpy(&allowTSLogon, buffer, 4);
WTSFreeMemory(buffer);
printf("WTSQueryUserConfig(): %d", allowTSLogon);
}
}

Ähnliche fragen