ИМХО, в начало тела функции неплохо было бы добавить строчку
*pbAdmin = FALSE;
Кроме того, в ветке для WINVER < 0x0500 выходной параметр pbAdmin дублируется возвращаемым значением функции, хранящимся в локальной переменной bResult. По логике, bResult должен сигнализировать успешно ли прошло выполнение функции, даже если пользователь не оказался администратором. В связи с этим также предлагаю добавить строку
bResult = TRUE;
перед
// переберем идентификаторы безопасности процесса в поисках необходимого нам
т.к. к моменту перебора групп токена все SID групп уже получены и выполнение функции можно считать успешным.