如何在计算机被锁定的情况下让计算机重起?急啊!

usstdiy 2003-08-26 09:54:03
Private Const EWX_LogOff As Long = 0
Private Const EWX_SHUTDOWN As Long = 1
Private Const EWX_REBOOT As Long = 2
Private Const EWX_FORCE As Long = 4
Private Const EWX_POWEROFF As Long = 8
Private wk_Restart As String


'The ExitWindowsEx function either logs off, shuts down, or shuts
'down and restarts the system.
Private Declare Function ExitWindowsEx Lib "user32" _
(ByVal dwOptions As Long, ByVal dwReserved As Long) As Long

'The GetLastError function returns the calling thread's last-error
'code value. The last-error code is maintained on a per-thread basis.
'Multiple threads do not overwrite each other's last-error code.
Private Declare Function GetLastError Lib "kernel32" () As Long

Private Const mlngWindows95 = 0
Private Const mlngWindowsNT = 1

Public glngWhichWindows32 As Long

'The GetVersion function returns the operating system in use.
Private Declare Function GetVersion Lib "kernel32" () As Long

Private Type LUID
UsedPart As Long
IgnoredForNowHigh32BitPart As Long
End Type

Private Type LUID_AND_ATTRIBUTES
TheLuid As LUID
Attributes As Long
End Type

Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
TheLuid As LUID
Attributes As Long
End Type

'The GetCurrentProcess function returns a pseudohandle for the
'current process.
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long

'The OpenProcessToken function opens the access token associated with
'a process.
Private Declare Function OpenProcessToken Lib "advapi32" _
(ByVal ProcessHandle As Long, _
ByVal DesiredAccess As Long, _
TokenHandle As Long) As Long

'The LookupPrivilegeValue function retrieves the locally unique
'identifier (LUID) used on a specified system to locally represent
'the specified privilege name.
Private Declare Function LookupPrivilegeValue Lib "advapi32" _
Alias "LookupPrivilegeValueA" _
(ByVal lpSystemName As String, _
ByVal lpName As String, _
lpLuid As LUID) As Long

'The AdjustTokenPrivileges function enables or disables privileges
'in the specified access token. Enabling or disabling privileges
'in an access token requires TOKEN_ADJUST_PRIVILEGES access.
Private Declare Function AdjustTokenPrivileges Lib "advapi32" _
(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

Private Declare Sub SetLastError Lib "kernel32" _
(ByVal dwErrCode As Long)
----------------------------------------------------------------
Private Sub AdjustToken()

'********************************************************************
'* This procedure sets the proper privileges to allow a log off or a
'* shut down to occur under Windows NT.
'********************************************************************

Const TOKEN_ADJUST_PRIVILEGES = &H20
Const TOKEN_QUERY = &H8
Const SE_PRIVILEGE_ENABLED = &H2

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

'Set the error code of the last thread to zero using the
'SetLast Error function. Do this so that the GetLastError
'function does not return a value other than zero for no
'apparent reason.
SetLastError 0

'Use the GetCurrentProcess function to set the hdlProcessHandle
'variable.
hdlProcessHandle = GetCurrentProcess()

If GetLastError <> 0 Then
MsgBox "GetCurrentProcess error==" & GetLastError
End If

OpenProcessToken hdlProcessHandle, _
(TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hdlTokenHandle

If GetLastError <> 0 Then
MsgBox "OpenProcessToken error==" & GetLastError
End If

'Get the LUID for shutdown privilege
LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid

If GetLastError <> 0 Then
MsgBox "LookupPrivilegeValue error==" & GetLastError
End If

tkp.PrivilegeCount = 1 ' One privilege to set
tkp.TheLuid = tmpLuid
tkp.Attributes = SE_PRIVILEGE_ENABLED

'Enable the shutdown privilege in the access token of this process
AdjustTokenPrivileges hdlTokenHandle, _
False, _
tkp, _
Len(tkpNewButIgnored), _
tkpNewButIgnored, _
lBufferNeeded

If GetLastError <> 0 Then
MsgBox "AdjustTokenPrivileges error==" & GetLastError
End If

End Sub
--------------------------------------------------------------
Function RestartComputer(ByVal UserName As String, ByVal Pwd As String) As Boolean
If UserName <> "a" Or Pwd <> "b" Then
RestartComputer = False
Exit Function
Else
On Error GoTo Errorhandler
If glngWhichWindows32 = mlngWindowsNT Then
AdjustToken
End If
ExitWindowsEx EWX_REBOOT, EWX_FORCE
RestartComputer = True
End If
Exit Function

Errorhandler:
RestartComputer = False
MsgBox "ExitWindowsEx's GetLastError " & GetLastError
End Function

我把它注册为dll,或者在com+组建中加入,在服务器已经登陆的时候,通过asp调用,服务器成功启动,但是当服务器被锁定的时候仍返回成功,但是却不重起,操作系统是win2000server.请了解的大虾解答一下,应该怎么改?
...全文
45 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
usstdiy 2003-08-26
  • 打赏
  • 举报
回复
help!
usstdiy 2003-08-26
  • 打赏
  • 举报
回复
目的就是为了用asp远程启动服务器
usstdiy 2003-08-26
  • 打赏
  • 举报
回复
我觉得好像也是,可能要在注册表里面加一个Runas的冬冬,不太了解,请指点
jlum99 2003-08-26
  • 打赏
  • 举报
回复
估计是权限不够,这个程序如果是本地用户应该没问提。
Python编程基础教程本教程旨在帮助初学者了解Python编程的基础知识和高级应用。我们将介绍Python的各个方面,包括基础语法、数据类型、控制结构、函数、文件操作、面向对象编程、模块和包、异常处理、装饰器、生成器、迭代器以及协程。1. Python基础Python是一种解释型、交互式的编程语言。它具有简单易学的语法和丰富的库,使得开发过程既快速又高效。在开始学习Python之前,建议您先熟悉基本的计算机科学概念,例如变量、数据类型、运算符等。2. 数据类型Python具有多种数据类型,包括数字(整数和浮点数)、字符串、布尔值、列表、元组、集合和字典等。这些数据类型在Python中有着广泛的应用,从简单的数值计算到复杂的数据处理。3. 控制结构控制结构是编程中的基本组成部分,它们决定了程序如何执行。Python支持条件语句(if-elif-else)和循环语句(for和while),可以根据程序中的特定条件和情况来选择适当的操作。4. 函数函数是封装一段代码的便捷方式,它们可以在需要时被调用。在Python中,您可以定义函数,并使用参数来传递数据。函数可以返回值,以便在调用它们时使用。5. 文件操作文件操作是编程中常见的任务之一。Python提供了许多内置的函数和方法来进行文件操作,如读取、写入和删除文件等。此外,Python还支持对文件进行高级操作,如读写二进制文件、文件锁定等。6. 面向对象编程面向对象编程是一种流行的编程范式,它使用类和对象的概念来构建复杂的系统。Python支持面向对象编程,您可以使用类来定义对象,并使用继承和多态等特性来扩展和定制对象的行为。7. 模块和包模块和包是Python中组织代码的重要工具。模块是一个包含Python代码的文件,而包则是一个包含多个模块的目录。通过使用模块和包,您可以轻松地组织和管理大型项目中的代码。8. 异常处理异常处理是Python中处理错误的方式之一。当程序中出现错误时,Python会抛出一个异常。通过使用try-except语句块,您可以捕获并处理这些异常,以确保程序的稳定性。9. 装饰器装饰器是Python中的高级功能之一,它允许您在函数或方法之间添加额外的功能,而不改变其原始实现。装饰器是一种强大的工具,可用于实现各种功能,如日志记录、性能分析等。10. 生成器生成器是Python中的一种特殊类型的迭代器。通过使用生成器函数和方法,您可以在需要时生成数据,而不是一次性生成所有数据。这使得生成器在处理大量数据时非常有用,因为它们可以节省内存空间。11. 迭代器和协程迭代器和协程是Python中的两个重要概念。迭代器允许您遍历容器类型的数据结构(如列表和元组),而协程则是一种异步编程的方式,它允许您在程序中执行多个任务并发执行。这两个概念在处理大量数据和高性能应用程序方面非常有用。
真正的U盘加密+文档同步+计算机锁定=无敌U盘伴侣 这是一款完全免费的软件,程序体积小巧,不到100KB,可以在U盘或电脑上运行。界面也绝对够“魅惑”,她还是一款绿色软件,就可以完全解决掉你上面将面临的问题!! --------------------------------------------------------- 应用举例: A、随着U盘/存储卡容量呈几何级增长,越来越多的朋友把自已的资料和秘密保存在U盘当中。 但是U盘的不安全因素使我们一直在担心害怕数据的遗失,如何保证自已U盘中的文件安全已成为一个迫在眉捷的问题! 虽然现在市场上有一些U盘加密软件,但那只是简单的隐藏,文件数据的安全得不到保障;或者有专门的软件,但又只能针对某一个U盘品牌,局限性非常大。 B、有朋友向你借用U盘/SD卡,或不慎丢失,你得睡不着? 你还将面临:1、企业机密泄露,自己饭碗难保;2、 苦心经营多年的客户资料被黑心同事全部盗走;3、 自己、朋友和家人的照片被发布上网,惨遭恶 搞,还引发“人肉搜索”…… C、现在许多朋友把家当成公司,公司忙不完的活要带到家里继续做,每天要把“我的文档”的几百上千个文件一次次的复制到U盘中,许多文件是U盘内已经有的了,如何解决这个问题,当然是把文件同步到U盘中啦,排除相同点,每天只要一点点^_^,很快很方便! 同时也是个人备份经常更新的文档、相片的好帮手。 D、在办公室上网正看着“X照门”呢^_^ ,正好内(不好意思啦,并不是每个人都这么巧,但一次就够了) 怎么办? 关掉?等下还要接着看呢,而且也怕有人趁机动我的电脑,打开“我最近打开的文件”,完了,什么都出来了。。。。 关机?不用这么麻烦吧,再说电脑开开关关也不太好吧,怎么办呢?
真正的U盘加密+文档同步+计算机锁定=无敌U盘伴侣 这是一款完全免费的软件,程序体积小巧,不到100KB,可以在U盘或电脑上运行。界面也绝对够“魅惑”,她还是一款绿色软件,就可以完全解决掉你上面将面临的问题!! --------------------------------------------------------- 应用举例: A、随着U盘/存储卡容量呈几何级增长,越来越多的朋友把自已的资料和秘密保存在U盘当中。 但是U盘的不安全因素使我们一直在担心害怕数据的遗失,如何保证自已U盘中的文件安全已成为一个迫在眉捷的问题! 虽然现在市场上有一些U盘加密软件,但那只是简单的隐藏,文件数据的安全得不到保障;或者有专门的软件,但又只能针对某一个U盘品牌,局限性非常大。 B、有朋友向你借用U盘/SD卡,或不慎丢失,你得睡不着? 你还将面临:1、企业机密泄露,自己饭碗难保;2、 苦心经营多年的客户资料被黑心同事全部盗走;3、 自己、朋友和家人的照片被发布上网,惨遭恶 搞,还引发“人肉搜索”…… C、现在许多朋友把家当成公司,公司忙不完的活要带到家里继续做,每天要把“我的文档”的几百上千个文件一次次的复制到U盘中,许多文件是U盘内已经有的了,如何解决这个问题,当然是把文件同步到U盘中啦,排除相同点,每天只要一点点^_^,很快很方便! 同时也是个人备份经常更新的文档、相片的好帮手。 D、在办公室上网正看着“X照门”呢^_^ ,正好内(不好意思啦,并不是每个人都这么巧,但一次就够了) 怎么办? 关掉?等下还要接着看呢,而且也怕有人趁机动我的电脑,打开“我最近打开的文件”,完了,什么都出来了。。。。 关机?不用这么麻烦吧,再说电脑开开关关也不太好吧,怎么办呢? --------------------------------------------------------- 分区加密功能特点: 1、不针对U盘主控方案,所有U盘、SD卡、CF卡都适用 2、可全盘加密 3、格式化后加密区数据依然存在 4、如果U盘遗失,不担心机密资料泄出 5、加密后不影响U盘的传输速度 6、加密后,别人无法得知私密区的存在 7、可预防加密区感染电脑病毒 8、兼容U盘量产USB-CDROM 魅色精灵应用举例: 我们可以将自已的密码数据库、收藏夹、银行数字证书、私人相片、日记、商业文件、财务数据等存放在加密区 这样就多了一层保护,数据更安全。 --------------------------------------------------------- 常见问题和使用技巧: 1、魅色U盘精灵可以适用于所有的U盘和SD卡吗? 答:可以,魅色U盘精灵不限制使用的U盘/SD卡方案和品牌,且永久免费。 小技巧:商家们可在出售的U盘中赠送本软件,以提高产品的附加价值。且本软件基本不占用空间 2、为什么我的同步列表内出现了乱码字符? 答:造成这种情况的原因一般是U盘内出现了坏块,解决办法是用相应的量产工具将U盘低格修复。 3、第一次分区后正常使用,再次插入U盘时无法进入加密区,提示密码错误? 答:魅色U盘精灵的默认密码为“meise”,也可以通过“改密码”功能修改为自已的密码。 还有一种情况是没有改过密码,解决方法请参考第二条 4、为什么我打开魅色U盘精灵就出现一个错误提示框:I/O错误,请检查是否选定的驱动器内没有磁盘 答:这种情况一般会出现在有内置读卡器且没有插入存储卡的笔记本上,只要在“请选择可移动磁盘”的下拉 列表中选择你要操作的移动设备即可。 5、在电脑上运行魅色U盘精灵和在U盘上运行有什么区别? 答:在功能上没有任何区别。只是在U盘上运行时启动速度会稍慢一些 6、如何更快的进入加密区? 答:1、鼠标点击“加密区”;2、直接输入密码;3、按回车键。是不是很快,一气呵成 --------------------------------------------------------- 版本更新: V1.74: 窗口最小化到系统托盘,方便其它软件的操作 V1.63: 优化了内存占用,修正了同步列表最后一项无法删除的bug V1.61: 增加合并分区时需输入密码,使加密区安全性进一步提高 V1.57: 支持在U盘上运行魅色精灵,方便在没有本程序的电脑上使用,真正的私人随身保险箱。 V1.11: 1、关闭程序时自动退出加密区,U盘更安全,使用更放心 2、鼠标移动到同步计划栏时自动显示源文件夹全目录名

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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