Функционал утилиты GroupMemberTest был перемещён в ADapter. GroupMemberTest больше не поддерживается!
Программа GroupMemberTest (сократим до gmt) разрабатывалась с целью отойти от «рисования» глупых зачастую не нужных форм авторизации у доменных проектов, которые дальше рамок локальной сети никуда не пойдут. Спустя какое-то время таких вещь-в-себе-проектов накопилось значительное количество и каждый раз делать форму входа, а в последствии администрировать данные пользователей — та ещё рутина. Поэтому и родилась идея о принципе входа на основании состава группы безопасности в Active Directory.
С членством в группе всё просто — добавил пользователя, удалил пользователя. Никаких несанкционированных «да что вы говорите…» доступов или передачи паролей. Ввести пользователя в группу может только администратор, он же может и удалить. Но это уже лирика.
Теперь о прозе.
Для демонстрационных целей я создал проект в IDE Lazarus с одной формой (test_form) и кнопкой TButton (test_button). Вывод данных будет осуществляться с помощью процедуры ShowMessage, поэтому больше никаких инструментов не потребуется.

Обращение к внешней утилите я обернул вот в такую функцию с использованием модуля Process:
function membertest(groupname: string):boolean;
var
gmt: TProcess;
stringlist: TStringList;
temp: string;
begin
gmt:=TProcess.Create(nil);
gmt.Executable:='gmt.exe';
gmt.Parameters.Add('-groupname');
gmt.Parameters.Add(groupname);
gmt.Options:=gmt.Options+[poUsePipes,poWaitOnExit,poNoConsole];
gmt.Execute;
stringlist:=TStringList.Create;
stringlist.LoadFromStream(gmt.Output);
temp:=trim(stringlist.Text);
stringlist.Free;
gmt.Free;
if temp='True' then Result:=True else Result:=False;
end;
У функции отсутствует обработчик ошибок, так что если исполняемый файл gmt.exe куда-то внезапно пропадёт — вылезет исключение процесса.
К событию click у test_button прикручиваем вызов функции:
procedure Ttest_form.test_buttonClick(Sender: TObject);
var
group: string;
begin
group:='Тестовая группа';
if membertest(group)=True
then
ShowMessage('Вы в составе группы ' + group + '!')
else
ShowMessage('Вас нет в составе группы ' + group + '!');
end;
Функция принимает в качестве аргумента ввода имя группы безопасности, а возвращает булевое значение, которое обрабатывается с помощью условия.
В зависимости от того является ли текущий пользователь членом группы или нет — появляется соответствующее сообщение. Например, такое:

Или такое:
