CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

求XP关机代码!

楼主8276(胡杰)2003-10-01 03:00:43 在 VB / 基础类 提问

谢谢 问题点数:0、回复次数:3Top

1 楼3661512(.Net)回复于 2003-10-01 10:17:44 得分 0

'放在模块申明部分  
  Public   Declare   Function   AdjustTokenPrivileges   Lib   "advapi32.dll"   _  
                    (ByVal   TokenHandle   As   Long,   ByVal   DisableAllPrivileges   As   Long,   _  
                    NewState   As   TOKEN_PRIVILEGES,   ByVal   BufferLength   As   Long,   _  
                    PreviousState   As   TOKEN_PRIVILEGES,   ReturnLength   As   Long)   As   Long  
  Public   Declare   Function   ExitWindowsEx   Lib   "user32"   Alias   "ExitWindowsEx"   (ByVal   uFlags   As   Long,   ByVal   dwReserved   As   Long)   As   Long  
   
  Enum   HowExitConst  
                                EWX_FORCE   =   4   '   强制关机  
                                EWX_LOGOFF   =   0   '   登出  
                                EWX_REBOOT   =   2   '   重开机  
                                EWX_SHUTDOWN   =   1   '   关机  
      End   Enum  
   
      Const   TOKEN_ADJUST_PRIVILEGES   =   &H20  
      Const   TOKEN_QUERY   =   &H8  
      Const   SE_PRIVILEGE_ENABLED   =   &H2  
      Const   ANYSIZE_ARRAY   =   1  
      Public   Type   LUID  
                                lowpart   As   Long  
                                highpart   As   Long  
      End   Type  
   
    Public   Type   LUID_AND_ATTRIBUTES  
                  pLuid   As   LUID  
                  Attributes   As   Long  
    End   Type  
   
    Public   Type   TOKEN_PRIVILEGES  
                              PrivilegeCount   As   Long  
                              Privileges(ANYSIZE_ARRAY)   As   LUID_AND_ATTRIBUTES  
    End   Type  
   
    Public   Declare   Function   ExitWindowsEx   Lib   "user32"   (ByVal   uFlags   As   Long,   _  
                    ByVal   dwReserved   As   Long)   As   Long  
    Public   Declare   Function   GetCurrentProcess   Lib   "kernel32"   ()   As   Long  
    Public   Declare   Function   LookupPrivilegeValue   Lib   "advapi32.dll"   Alias   _  
                    "LookupPrivilegeValueA"   (ByVal   lpSystemName   As   String,   _  
                    ByVal   lpName   As   String,   lpLuid   As   LUID)   As   Long  
    Public   Declare   Function   AdjustTokenPrivileges   Lib   "advapi32.dll"   _  
                    (ByVal   TokenHandle   As   Long,   ByVal   DisableAllPrivileges   As   Long,   _  
                    NewState   As   TOKEN_PRIVILEGES,   ByVal   BufferLength   As   Long,   _  
                    PreviousState   As   TOKEN_PRIVILEGES,   ReturnLength   As   Long)   As   Long  
    Public   Declare   Function   OpenProcessToken   Lib   "advapi32.dll"   _  
                    (ByVal   ProcessHandle   As   Long,   ByVal   DesiredAccess   As   Long,   _  
                      TokenHandle   As   Long)   As   Long  
  '**************WIN2000安全机制关机*************************  
  Public   Sub   AdjustToken()  
   
    Dim   hdlProcessHandle   As   Long  
    Dim   hdlTokenHandle   As   Long  
    Dim   tmpLuid   As   LUID  
    Dim   tkp   As   TOKEN_PRIVILEGES  
    Dim   tkpNewButIgnored   As   TOKEN_PRIVILEGES  
    Dim   lBufferNeeded   As   Long  
         
    hdlProcessHandle   =   GetCurrentProcess()  
    OpenProcessToken   hdlProcessHandle,   (TOKEN_ADJUST_PRIVILEGES   Or   TOKEN_QUERY),   _  
                  hdlTokenHandle  
   
    LookupPrivilegeValue   "",   "SeShutdownPrivilege",   tmpLuid  
    tkp.PrivilegeCount   =   1  
    tkp.Privileges(0).pLuid   =   tmpLuid  
    tkp.Privileges(0).Attributes   =   SE_PRIVILEGE_ENABLED  
   
    AdjustTokenPrivileges   hdlTokenHandle,   False,   tkp,   Len(tkpNewButIgnored),   _  
                                                tkpNewButIgnored,   lBufferNeeded  
  End   Sub  
   
  '具体实现部分  
  AdjustToken   '获得系统令牌权限  
  Call   ExitWindowsEx(EWX_SHUTDOWN,   0)   '关闭计算机Top

2 楼pigpag(Pigpag - A GRE Fighter)回复于 2003-10-01 10:40:07 得分 0

FAQ里面有的。这10分也许浪费了。Top

3 楼5653325(等待开刃的刀)回复于 2003-10-01 10:52:59 得分 0

http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=18622  
  Top

相关问题

  • ?????windows2000/98的关机代码???
  • XP 关机!
  • 急,用VB写w2K的关机代码!
  • WindowsNT下关机的源代码
  • 关机程序代码运行不了!
  • 关机、重启、注销源代码?
  • C#关机的代码怎样?
  • 谁有windows快速关机的代码?
  • xp关机问题
  • ??2000的关机代码谁能告诉我????

关键词

  • 关机
  • ewx
  • luid
  • privileges
  • token
  • byval
  • as long
  • attributes
  • const
  • type

得分解答快速导航

  • 帖主:8276

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

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