社区
Delphi
帖子详情
我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
hiflower
2003-07-16 01:19:33
我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
...全文
93
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
系统上降低 UAC 权限
运行
程序
(从管理员权限降权到普通用户权限)
在
Windows
系统中,管理员权限和非管理员权限
运行
的
程序
之间不能使用
Windows
提供的通信机制进行通信。对于部分文件夹(ProgramData),管理员权限创建的文件是不能以非管理员权限修改和删除的。 然而,
一个
进程...
Windows
电脑右键菜单添加“管理员身份
运行
”
功能
指南
简介:本教程将介绍如何通过批处理文件为
Windows
操作系统的右键菜单添加“管理员身份
运行
”选项,以便用户能够方便地以高权限执行特定
程序
。教程涵盖了理解UAC机制、修改注册表、创建新右键菜单项的步骤,并强调了...
服务器管理系统推荐,十大
Windows
服务器工具
系统管理员
必备
这个问题可能在很多
系统管理员
心中一直纠结着,本文列举出我个人最喜欢的10个
Windows
服务器管理工具,也许正好可以解开你心中那道结。1、System Center Capacity Planner你可能会感到奇怪,我为什么要从
一个
微软已经...
AD域
允许
普通用户打开需要管理员权限的软件
防止有些不安分的员工擅自下载及安装一些其他软件,导致电脑变卡或者中毒等,所以加了域后,安装任何软件都由IT来安装,但是这里涉及到
一个
问题,安装的时候需要管理员密码,但是某些软件(不在少数),不知为何在...
和孩子斗智斗勇-如何限制只
运行
上网课的
程序
(
Windows
篇)
又一次的疫情来袭,孩子们又开始转向线上学习。疫情的零星扩散,看样子一下子也找不到根除的方法,孩子...我首先想到的手段是通过
Windows
防火墙进行限制,只
允许
上网课的应用
程序
联网。但这个方法没奏效多久,孩子...
Delphi
5,938
社区成员
262,945
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章