社区
Delphi
帖子详情
我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
hiflower
2003-07-16 01:19:33
我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
...全文
100
7
打赏
收藏
我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hiflower
2003-07-17
打赏
举报
回复
问题解决,供大家参考:
const
SECURITY_BUILTIN_DOMAIN_RID = $20;
DOMAIN_ALIAS_RID_ADMINS = $220;
SECURITY_NT_AUTHORITY:TSIDIDENTIFIERAUTHORITY=(Value:(0,0,0,0,0,5));
cmmi
2003-07-16
打赏
举报
回复
note: 用户名为administrator的不一定为系统管理员!
hiflower
2003-07-16
打赏
举报
回复
to sz1008(Need For Speed) :
谢谢!
再请教:
SECURITY_NT_AUTHORITY, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS
这几个值如何定义呢?编译通不过
haoguozhong
2003-07-16
打赏
举报
回复
如何从注册表中检查当前用户是否是administrator呢?
lovelymelon
2003-07-16
打赏
举报
回复
在运行该程序时,从注册表种检测一下当前用户是不是administrator,如果是,用一个全局变量admin:boolean型记录为true,如果不是,记录为false,这样一些只有管理员执行的功能时,首先读取全局变量admin,为true,可以执行,为false,不能执行
mrtxc
2003-07-16
打赏
举报
回复
你在执行功能时检查一下系统用户名应该能行。
没试过,好象在哪儿见过。
sz1008
2003-07-16
打赏
举报
回复
笨而简单的方法是做两个版本
深而复杂的方法是在运用次功能前判断是否为administrator代码如下(from Kingron's超级猛料)
判断是否为超级用户 [ Win2000 ]
function IsAdmin: Boolean;
var
hAccessToken: THandle;
ptgGroups: PTokenGroups;
dwInfoBufferSize: DWORD;
psidAdministrators: PSID;
x: Integer;
bSuccess: BOOL;
begin
Result := False;
bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True,
hAccessToken);
if not bSuccess then
begin
if GetLastError = ERROR_NO_TOKEN then
bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY,
hAccessToken);
end;
if bSuccess then
begin
GetMem(ptgGroups, 1024);
bSuccess := GetTokenInformation(hAccessToken, TokenGroups,
ptgGroups, 1024, dwInfoBufferSize);
CloseHandle(hAccessToken);
if bSuccess then
begin
AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0, psidAdministrators);
{$R-}
for x := 0 to ptgGroups.GroupCount - 1 do
if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then
begin
Result := True;
Break;
end;
{$R+}
FreeSid(psidAdministrators);
end;
FreeMem(ptgGroups);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if isAdmin then
begin
ShowMessage('Logged in as Administrator');
end;
Windows
2000
密码破解不完全指南(转)
本文介绍了两种破解
Windows
2000
系统管理员
密码的方法。一是借助
Windows
XP -
2000
- NT Key制作特殊驱动盘,将密码重置为'12345';二是使用LC4从Sam文件中刺探破解密码。前者成功率100%但软件为商业版,后者密码复杂时耗时久。
浅谈非
系统管理员
用户本地登录
Windows
2000
server
本文讲述了从
Windows
NT 4.0+pack5到
Windows
2000
server系统,设置普通用户本地登录及关闭系统权限时遇到的问题。在
Windows
2000
server中,找不到域用户管理器,通过查找帮助文件和不断尝试,最终发现需在本地安全策略、域安全策略、域控制器安全策略中都添加用户或组才能成功登录。
Windows
2000
终端服务使用技巧
本文围绕
Windows
2000
终端服务展开,介绍了其“应用
程序
模式”和“远程管理模式”的特点、判断及切换方法,还说明了安装模式与执行模式的切换、用户登录设置。此外,详细阐述了在该终端服务器上安装Office
2000
的准备工作、步骤,以及启动终端服务后Office
2000
无法使用的解决办法。
如何修改SQL Server
2000
身份验证模式和
系统管理员
本文介绍如何更改SQLServer
2000
的身份验证模式,从仅限
Windows
验证到混合验证模式,并提供了修改
系统管理员
Sa登录密码的详细步骤。
Delphi
5,943
社区成员
262,943
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章