function OnSystemAccount(): Boolean;
const
cnMaxNameLen = 254;
var
sName: string;
dwNameLen: DWORD;
begin
dwNameLen := cnMaxNameLen - 1;
SetLength(sName, cnMaxNameLen);
GetUserName(PChar(sName), dwNameLen);
SetLength(sName, dwNameLen);
if UpperCase(Trim(sName)) = 'SYSTEM' then Result := True
else
Result := False;
end;
Функция Delphi!
Функция OnSystemAccount проверяет, запущен ли программный процесс под системным учетом. Вот шаг за шагом, что она делает:
Она определяет некоторые константы и переменные:
cnMaxNameLen: Максимальная длина имени пользователя (254 символа).
sName: Строка для хранения имени пользователя.
dwNameLen: DWORD-переменная для хранения длины имени пользователя.
Она устанавливает начальную длину строки sName в cnMaxNameLen - 1, что оставляет один символ для null-терминатора.
Она вызывает функцию GetUserName, передавая указатель на строку sName и ее длину (dwNameLen). Функция получает имя пользователя текущего процесса.
Она устанавливает фактическую длину строки sName в значение, возвращенное функцией GetUserName. Это обеспечивает корректное null-терминирование строки.
Она проверяет, равна ли верхний регистр версии обрезанной строки sName строке 'SYSTEM'.
Если это так, функция возвращает True, указывая, что программа запущена под системным учетом. В противном случае она возвращает False.
Логика этой функции заключается в том, что когда программа запущена под системным учетом, ее имя пользователя обычно установлено в 'SYSTEM'. Функция проверяет это конкретное имя пользователя и возвращает соответствующее значение.
В терминах альтернатив, можно использовать другие методы для определения, запущен ли программный процесс под системным учетом. Например, можно проверить свойство CurrentProcess объекта AccessControl или Identity, которое предоставляет информацию о безопасности контекста процесса. Однако эта функция проста и легко понимается, поэтому она является хорошим выбором для ее предназначенного назначения.
Статья описывает функцию OnSystemAccount в Delphi, которая позволяет определить запущена ли программа под системным аккаунтом.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS