CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

我要什么函数才能取得NT关机权限

楼主lqwxfdwj(风吹小楼)2001-07-01 12:40:39 在 Delphi / VCL组件开发及应用 提问

好像ADJUSTTOKENPRIVLEGES()授予SE_SHUTDOWN_NAME权限但是这个函数我不会用有没有谁可以说细地说一下;  
  最好是有一个例子;  
  再说明一点:关于EXITWINDOWSEX()我会用;  
  我只是要怎么样才能取得权限;  
  谢谢了; 问题点数:28、回复次数:3Top

1 楼cnmusic(cnmusic)回复于 2001-07-01 13:18:29 得分 0

http://www.vbaccelerator.com/tips/vba0019.htm  
  看完了别忘了给我加分。Top

2 楼ey4s(雏鹰)回复于 2001-07-01 14:21:52 得分 0

win2k下的关机/重起代码。  
  #include   "stdio.h"  
  #include   "windows.h"  
  int   main()  
  {  
         //定义重起的时候发送给所有用户的消息  
         LPSTR   msg="Reboot   Tool   By   Lion   Hook\nhttp://www.xici.net";  
         //尝试用最简单的API函数重起  
         if(ExitWindowsEx(EWX_REBOOT,   0))return   TRUE;  
         if(ExitWindowsEx(EWX_REBOOT   ¦   EWX_FORCE,   0))return   TRUE;  
         //因为上面的重起不成功,所以需要调整本进程的特权  
         HANDLE   hToken;  
         TOKEN_PRIVILEGES   tkp;  
         if   (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES ¦   TOKEN_QUERY,   &hToken))   return   FALSE;  
         //获取重起的特权SE_SHUTDOWN_NAME  
         LookupPrivilegeValue(NULL,   SE_SHUTDOWN_NAME,   &tkp.Privileges[0].Luid);  
         tkp.PrivilegeCount   =   1;  
         tkp.Privileges[0].Attributes   =   SE_PRIVILEGE_ENABLED;    
         AdjustTokenPrivileges(hToken,   FALSE,   &tkp,   0,   (PTOKEN_PRIVILEGES)NULL,   0);  
         //判断是NT内核还是9x内核,选择用不同的方式  
         if(!(GetVersion()   &   0x80000000))  
           InitiateSystemShutdown(NULL,   msg,   20,   TRUE,   TRUE);  
         else   if   (!ExitWindowsEx(EWX_REBOOT,   0))  
           if(!ExitWindowsEx(EWX_REBOOT   ¦   EWX_FORCE,   0))  
                return   FALSE;  
         return   TRUE;  
  }  
  Top

3 楼InsideDelphi(ID)回复于 2001-07-01 18:31:17 得分 28

ft,要用ObjectPascal,而且,怎么用你这种方式!  
  var  
    VerInfo:TOSVersionInfo;  
    hToken:THANDLE;  
    tkp:TOKEN_PRIVILEGES;  
    Nothing:Cardinal;  
  begin  
  VerInfo.dwOSVersionInfoSize:=SizeOf(VerInfo);  
  GetVersionEx(VerInfo);  
  if   VerInfo.dwPlatformId=VER_PLATFORM_WIN32_NT   then  
    Begin  
        OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES   or   TOKEN_QUERY,hToken);  
        LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);  
        tkp.PrivilegeCount:=   1;  
        tkp.Privileges[0].Attributes:=   SE_PRIVILEGE_ENABLED;  
        AdjustTokenPrivileges(hToken,   FALSE,   tkp,   0,nil,   Nothing);  
      End;  
      ExitWindowsEx(//Your   option   here,see   msdn   or   win32help);  
    end;  
  Top

相关问题

  • 关机函数
  • 关机函数
  • 关于Nt下关机问题(权限)
  • 2000里的关机函数?
  • php unlink 函数权限问题
  • 后台权限检查函数问题!
  • windows2000或NT下的用户和权限管理的API函数名,先说者得分!!!
  • Win2000的关机API函数是什么
  • 用ExitWindowsEx函数无法关机
  • 关机函数怎么没反应?

关键词

  • win32
  • 函数
  • 权限
  • tkp
  • privileges
  • exitwindowsex
  • ewx
  • htoken
  • reboot
  • se

得分解答快速导航

  • 帖主:lqwxfdwj
  • InsideDelphi

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo