请问在WindowsXP下如何用API函数注销和切换用户?

AeLord 2002-12-28 11:21:43
请各位指教!
...全文
533 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
huzhangyou 2003-01-12
  • 打赏
  • 举报
回复
在NT系统上面为了安全
设了很多级别
在系统一般情况下
很多权限没有开启
你必须自己开启
才能做一些操作
比如
在本机登录。
允许用户利用计算机键盘登录计算机。
Administrator、Everyone、Guest、Power User 和 User
删除 Everyone 和 Guest,使其不具有该权限。
Account Operator、Administrator、Backup Operator、Server Operator 和 Print Operator
不做更改

关闭系统。(SeShutdown-
Privilege)
允许用户关闭 Windows NT。
Administrator、Everyone、Guest、Power User 和 User
删除 Everyone 和 Guest,使其不具有该权限。
Account Operator、Administrator、Backup Operator、Server Operator 和 Print Operator
不做更改

从网络访问此计算机
允许用户通过网络连接到计算机
Administrator、Everyone 和 Power User
Administrator、Power User 和 User
Administrator 和 Everyone
Administrator、Backup Operator、Server Operator、Print Operator、User 和 Guest(如果启用)



下表中的权限通常无需对默认设置做更改,即使在最高级的安全安装中也是如此。但是,最好先根据特定安全需要来测试表中的各项并做出更改。


用户权限
工作站在默认情况下具有该权限的组
服务器在默认情况下具有该权限的组

担当操作系统的一部分
(SeTcbPrivilege)
允许进程作为操作系统的一个安全受信的部分执行。有些子系统具有此权限。
(没有)
(没有)

域中添加工作站 (SeMachineAccountPrivilege)
允许用户向特定域添加工作站。该权限仅对域控制器有意义。
(没有)
(没有)

备份文件和目录
(SeBackupPrivilege)
允许用户备份文件和目录。该权限替代文件和目录权限。
Administrator、Backup Operator 和 Server Operator
Administrator、Backup Operator 和 Server Operator

跳过遍历检查 (SeChangeNotifyPrivilege)
允许用户更改目录和访问文件和子目录,即使用户没有访问父目录的权限。
Everyone
Everyone

更改系统时间
(SeSystemTimePrivilege)
允许用户设置计算机内部时钟的时间。
Administrator 和 Power User
Administrator 和 Server Operator

创建页面文件
(SeCreatePagefilePrivilege)
允许用户创建用于虚拟内存交换的新的页面文件。
Administrator
Administrator

创建记号对象
(SeCreateTokenPrivilege)
允许进程创建访问令牌。只有“本地安全颁发机构”可以实现此操作。
(没有)
(没有)

创建永久共享对象
(SeCreatePermanentPrivilege)
允许用户创建在 Windows NT 内使用的特殊永久对象,如 \\Device。
(没有)
(没有)

调试程序
(SeDebugPrivilege)
允许用户调试各种底层对象,如线程。
Administrator
Administrator

从远端系统强制关机
(SeRemoteShutdownPrivilege)
允许用户通过网络远程关闭 Windows NT 系统。
Administrator 和 Power User
Administrator 和 Server Operator

产生安全审核
(SeAuditPrivilege)
允许进程产生安全审核日志项目。
(没有)
(没有)

增加配额
(SeIncreaseQuotaPrivilege)
没有。该权限对 Windows NT 的当前版本无效。
Administrator
Administrator

增加进度优先级
(SeIncreaseBasePriorityPrivilege)
允许用户提高进程的执行优先级。
Administrator
Administrator

装载和卸载设备驱动程序
(SeLoadDriverPrivilege)
允许用户安装和删除设备驱动程序。
Administrator
Administrator

内存中锁定页
(SeLockMemoryPrivilege)
允许用户锁定内存中的页面以防止其换页到后备存储器(如 Pagefile.sys)。
(没有)
(没有)

以批处理作业登录
没有。该权限对 Windows NT 的当前版本无效。
(没有)
(没有)

以服务登录
允许进程作为服务向系统注册。
(没有)
(没有)

管理审核和安全日志
(SeSecurityPrivilege)
允许用户指定需审核的资源访问类型(如文件访问)以及查看和清除安全日志。请注意该权限不允许用户使用“用户管理器”中“策略”菜单的“审核”命令设置系统审核策略。而且,管理员组中的成员始终具有查看和清除安全日志的权限。
Administrator
Administrator

修改固件环境值
(SeSystemEnvironmentPrivilege)
允许用户修改存储在支持该类型配置的系统中稳定 RAM 中的系统环境变量。
Administrator
Administrator

配置单一进程
(SeProfSingleProcess)
允许用户对进程进行配置处理(性能抽样)。
Administrator
Administator

配置系统性能
(SeSystemProfilePrivilege)
允许用户对系统进行配置处理(性能抽样)。
Administrator
Administrator

替换进程级记号
(SeAssignPrimaryTokenPrivilege)
允许用户修改进程的安全访问令牌。这是一个仅由系统使用的强大的权限。
(没有)
(没有)

还原文件和目录
(SeRestorePrivilege)
允许用户还原备份文件和目录。该权限替代文件和目录权限。
Administrator 和 Server Operator
Administrator、Backup Operator 和 Server Operator

取得文件或其它对象的所有权
(SeTakeOwnershipPrivilege)
允许用户取得计算机上文件、目录、打印机和其它对象的所有权。该权限替代保护对象的权限。
Administrator
Administrator

在必要的时候
你需要开启相应的所有权

这个问题我当初也有点问题
后来写信请教了BCB_FANS
在网上找了一下相关的东西
才明白了很多
上面是我冲很多地方总结出来的
大家分享一下
AeLord 2003-01-11
  • 打赏
  • 举报
回复
虽然我提的问题没有人能给出一个满意的答案,但还是要感谢大家的参与,不过这些问题我还是自己给解决掉了。
再问两个问题,然后散分:
1)自己的功力要到什么样的地步才能算得上是小高手,到什么境界方可称为大高手?
2)在csdn上成为斑竹需要什么条件?
请各位发表高见:
slhuang 2003-01-11
  • 打赏
  • 举报
回复
最后感谢AeLord(独孤C++)。
AeLord 2003-01-09
  • 打赏
  • 举报
回复
我猜测这是因为NT系统需要对于一些重要的事件如:关机、重启进行记录与跟踪,所以需要进行相关预备操作。最后那段代码去掉似乎也行!
slhuang 2003-01-09
  • 打赏
  • 举报
回复
to:AeLord(独孤C++)
请这位老大看看下面的帮助文件:

Windows NT: To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege. For more information about security privileges, see Privileges.
Windows 95: Security privileges are not supported or required.

他的意思好象是说我还要用AdjustTokenPrivileges function 来使那个私有变量SE_SHUTDOWN_NAME enable啊?
这是怎么回事?
slhuang 2003-01-09
  • 打赏
  • 举报
回复
to:AeLord(独孤C++)
感谢AeLord(独孤C++)老兄的指教!
slhuang 2003-01-09
  • 打赏
  • 举报
回复
to:Aelord(孤独C++)
感谢Aelord(孤独C++)老兄的指教!
大大怪老张 2003-01-07
  • 打赏
  • 举报
回复
学习
AeLord 2003-01-07
  • 打赏
  • 举报
回复
to : slhuang(斯巴达克)
下面这段代码将帮助你:
其中Operation=1时关机,Operation=0时重启
void __fastcall TfrmMainWindow::ShutdownOperation(int Operation)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
{
return;
}
if(!LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid))
{
return;
}
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
if(GetLastError()!=ERROR_SUCCESS)
{
return;
}
switch(Operation)
{
case 0:
if(!ExitWindowsEx(EWX_REBOOT|EWX_FORCE,0))
{
return;

}
break;
case 1:
if(!ExitWindowsEx(EWX_POWEROFF|EWX_FORCE,0))
{
return;

}
break;
}
AdjustTokenPrivileges(hToken,TRUE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);
}
slhuang 2003-01-07
  • 打赏
  • 举报
回复
to :RomanticProgrammer
请问在WIN2K下关机要怎么做?
如果只是ExitWindowEx()好象不行,还要一个函数辅助才行,我查了一 下那个帮助文件,但看不太懂,请指教!
AeLord 2003-01-07
  • 打赏
  • 举报
回复
还请各方高人给出更好的方法,人人有分。
AeLord 2003-01-07
  • 打赏
  • 举报
回复
不好意思,不是调用API直接切换用户,而是用下面的办法:

keybd_event(VK_LWIN, 0, 0 ,0);
keybd_event('L',0, 0 ,0);
keybd_event('L',0, KEYEVENTF_KEYUP,0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
一样也能成功。
mustang_zr 2003-01-07
  • 打赏
  • 举报
回复
我也很想知道如何切换用户

gz
favorit 2003-01-07
  • 打赏
  • 举报
回复
楼主知道了就把切换用户的API共享一下呀
AeLord 2003-01-07
  • 打赏
  • 举报
回复
我知道如何解决了。
gdyt007 2002-12-29
  • 打赏
  • 举报
回复
gz
RomanticProgrammer 2002-12-28
  • 打赏
  • 举报
回复
更正:ExitWindowsEx(EWX_LOGOFF,0);
RomanticProgrammer 2002-12-28
  • 打赏
  • 举报
回复
注销:ExitWindowsEx(EWX_LOGOFF);
切换用户:我也想知道...
RomanticProgrammer 2002-12-28
  • 打赏
  • 举报
回复
谁知道切换用户的api告诉我一声啊..

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧