windows - 如何检查是否启用了使用管理员帐户登录?
问题描述
该视频展示了如何启用/禁用管理员登录帐户:
- 以管理员身份启动cmd.exe
net user Administrator /active:yes
-启用net user Administrator /active:no
-禁用
我想知道是否有可能以编程方式验证是否已经启用?
提前致谢。
解决方案
在上面的评论中留下建议并遵循此示例后,解决方案有效。
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
Windows,
ShellAPI,
SysUtils;
type
TUserInfo1 = record
usri1_name: PWideChar;
usri1_password: PWideChar;
usri1_password_age: Cardinal;
usri1_priv: Cardinal;
usri1_home_dir: PWideChar;
usri1_comment: PWideChar;
usri1_flags: Cardinal;
usri1_script_path: PWideChar;
end;
PUserInfo1 = ^TUserInfo1;
function NetUserGetInfo(servername: PWideChar; username: PWideChar; level: Cardinal; var bufptr: PUserInfo1): Cardinal; stdcall; external 'netapi32.dll' name 'NetUserGetInfo';
function IsAdminLoginEnabled: Boolean;
const
UF_ACCOUNTDISABLE = $0002;
username = 'Administrator';
var
ui1: PUserInfo1;
begin
Result := False;
if NetUserGetInfo(nil, username, 1, ui1) = 0 then
Result := (ui1.usri1_flags and UF_ACCOUNTDISABLE) <> UF_ACCOUNTDISABLE;
end;
const
CmdExePath = 'C:\Windows\System32\cmd.exe';
AdminLoginEnable = '/C net user Administrator /active:yes';
AdminLoginDisable = '/C net user Administrator /active:no';
begin
try
ShellExecute(0, nil, CmdExePath, AdminLoginEnable, nil, SW_HIDE);
Sleep(2000);
Writeln(IsAdminLoginEnabled);
ShellExecute(0, nil, CmdExePath, AdminLoginDisable, nil, SW_HIDE);
Sleep(2000);
Writeln(IsAdminLoginEnabled);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
Readln;
end.
推荐阅读
- java - 如何使用带有自定义渲染器的 JList 的 setter 来设置单元格的内容?
- python - 将具有浮点数和字符串数的数组转换为浮点数
- clang - 如何在 Cygwin 上获取 Clang
- reactjs - WebSocket SocketIO 连接不适用于 Heroku 上的 NestJS 服务器并在 Vercel 上响应客户端
- mysql - phpMyAdmin 在插入第一个表时执行触发器时在第二个表中存储一个随机数
- azure - 在创建事件订阅之前从 ARM 部署函数
- python - 我如何使用 python 和 beautifulsoup 进行网页抓取?
- c++ - 使用 hashmap 打印第一个重复元素;
- paypal - 除非结帐成功,否则阻止网页访问
- android - 如何使用底部导航视图从片段中调用片段 - Kotlin