社区
Delphi
帖子详情
我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
hiflower
2003-07-16 01:19:33
我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
...全文
76
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;
【大模型八股文面试】:强化学习在自然语言处理下的应用篇.pdf
大模型八股文面试题
功能
测量显微镜点扩散函数(PSF)在z平面内沿着x和y方向的半高全宽,并且沿着z_x和z_y方向.zip
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接
运行
。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
摄影网络营销策划方案.doc
摄影网络营销策划方案.doc
UG三维图怎么转CAD二维图(有图).doc
UG三维图怎么转CAD二维图(有图).doc
C#实现数据库连接登录界面的简单示例
资源下载链接为: https://pan.quark.cn/s/f989b9092fc5
Delphi
5,927
社区成员
262,932
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章