社区
Delphi
帖子详情
我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
hiflower
2003-07-16 01:19:33
我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
...全文
78
7
打赏
收藏
我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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),管理员权限创建的文件是不能以非管理员权限修改和删除的。 然而,
一个
进程
运行
之后启动的子进程,会继承当前进程的 UAC 权限;于是有时我们会有降权
运行
的需要。本文将介绍
Windows
系统上降权
运行
的几种方法。 本文的降权
运行
指的是: 有...
Windows
电脑右键菜单添加“管理员身份
运行
”
功能
指南
本文还有配套的精品资源,点击获取 简介:本教程将介绍如何通过批处理文件为
Windows
操作系统的右键菜单添加“管理员身份
运行
”选项,以便用户能够方便地以高权限执行特定
程序
。教程涵盖了理解UAC机制、修改注册表、创建新右键菜单项的步骤,并强调了操作风险和安全预防措施。 1.
Windows
管理员身份
运行
的概念
Windows
管理员账户的定义 在Windo...
服务器管理系统推荐,十大
Windows
服务器工具
系统管理员
必备
永不消失与越发强大的工具这么多年来,微软已经默默地为我们提供了大量的服务器管理工具,工具多了,烦心的事情也随之而来了,究竟哪
一个
工具是最好的呢?这个问题可能在很多
系统管理员
心中一直纠结着,本文列举出我个人最喜欢的10个
Windows
服务器管理工具,也许正好可以解开你心中那道结。1、System Center Capacity Planner你可能会感到奇怪,我为什么要从
一个
微软已经停止更新的工具开...
如何在
windows
开启UAC(用户账号控制)的情况下优雅的管理
程序
的权限申请方案(一)
问题起源: 简单的说就是在
windows
vista之前的
windows
系统,只要是管理员(比如Administrator)账户登录系统以后,该账户下的任何
程序
的启动权限都具有管理员权限;这个权限是很高的(仅仅比System权限低),具有这个权限的
程序
几乎可以“为所欲为”,试想如果
一个
病毒
程序
拥有了这个权限,那它可以
做
很多的“破坏”活动,这将给系统的安全造成了极大的安全隐患。 U...
AD域
允许
普通用户打开需要管理员权限的软件
问题场景描述 公司的所有电脑都加了域,防止有些不安分的员工擅自下载及安装一些其他软件,导致电脑变卡或者中毒等,所以加了域后,安装任何软件都由IT来安装,但是这里涉及到
一个
问题,安装的时候需要管理员密码,但是某些软件(不在少数),不知为何在
运行
时竟然需要管理员权限,例如:美图秀秀。若该软件使用人员较多,又不能把管理员密码给他们,那只能由管理员手工输入,这样的话IT人员一天到晚就输入密码了。显然,这是不可取的,那么如何解决这个问题? 较麻烦的解决方案(最能满足要求):
Windows
ADK
Windows
Delphi
5,930
社区成员
262,936
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章