在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

強制一個本地或遠(yuǎn)程NT系統(tǒng)關(guān)閉

強制一個本地或遠(yuǎn)程NT系統(tǒng)關(guān)閉

更新時間:2022-05-14 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

在Windows NT下,你能強制本地或遠(yuǎn)程機器定時關(guān)閉。這段代碼將告訴你怎么做。你能指定系統(tǒng)關(guān)閉前的等待時間(0代表立即關(guān)閉),關(guān)閉進(jìn)程的優(yōu)先級(決定是否允許保存未完成的工作)和機器是否要重新啟動。
  開始一個新的Project,加入一個module,然后加入一下代碼:

'判斷系統(tǒng)是否為NT:
Private Type OSVERSIONINFO
  dwOSVersionInfoSize As Long
  dwMajorVersion As Long
  dwMinorVersion As Long
  dwBuildNumber As Long
  dwPlatformId As Long
  szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type  
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Const VER_PLATFORM_WIN32_NT = 2
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const VER_PLATFORM_WIN32s = 0

'報告API錯誤:
Private Const FORMAT_MESSAGE_ALLOCATE_BUFFER = &H100
Private Const FORMAT_MESSAGE_ARGUMENT_ARRAY = &H2000
Private Const FORMAT_MESSAGE_FROM_HMODULE = &H800
Private Const FORMAT_MESSAGE_FROM_STRING = &H400
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Private Const FORMAT_MESSAGE_IGNORE_INSERTS = &H200
Private Const FORMAT_MESSAGE_MAX_WIDTH_MASK = &HFF
Private Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" (ByVal dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, ByVal dwLanguageId As Long, ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Long) As Long

' =====================================================================
' NT Only
Private Type LARGE_INTEGER
  LowPart As Long
  HighPart As Long
End Type

Private Type LUID
  LowPart As Long
  HighPart As Long
End Type

Private Type LUID_AND_ATTRIBUTES
  pLuid As LUID
  Attributes As Long
End Type

Private Type TOKEN_PRIVILEGES
  PrivilegeCount As Long  
  Privileges(0 To 0) As LUID_AND_ATTRIBUTES  
End Type  

Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetTokenInformation Lib "advapi32.dll" (ByVal TokenHandle As Long, TokenInformationClass As Integer, TokenInformation As Any, ByVal TokenInformationLength As Long, ReturnLength As Long) As Long
Private 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
Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long

Private Const SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
Private Const SE_PRIVILEGE_ENABLED = &H2

Private Const READ_CONTROL = &H20000
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const STANDARD_RIGHTS_EXECUTE = (READ_CONTROL)
Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Private Const STANDARD_RIGHTS_REQUIRED = &HF0000
Private Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)

Private Const TOKEN_ASSIGN_PRIMARY = &H1
Private Const TOKEN_DUPLICATE = (&H2)
Private Const TOKEN_IMPERSONATE = (&H4)
Private Const TOKEN_QUERY = (&H8)
Private Const TOKEN_QUERY_SOURCE = (&H10)
Private Const TOKEN_ADJUST_PRIVILEGES = (&H20)
Private Const TOKEN_ADJUST_GROUPS = (&H40)
Private Const TOKEN_ADJUST_DEFAULT = (&H80)
Private Const TOKEN_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or _
            TOKEN_ASSIGN_PRIMARY Or _
            TOKEN_DUPLICATE Or _
            TOKEN_IMPERSONATE Or _
            TOKEN_QUERY Or _
            TOKEN_QUERY_SOURCE Or _
            TOKEN_ADJUST_PRIVILEGES Or _
            TOKEN_ADJUST_GROUPS Or _
            TOKEN_ADJUST_DEFAULT)
Private Const TOKEN_READ = (STANDARD_RIGHTS_READ Or TOKEN_QUERY)
Private Const TOKEN_WRITE = (STANDARD_RIGHTS_WRITE Or _
            TOKEN_ADJUST_PRIVILEGES Or _
            TOKEN_ADJUST_GROUPS Or _
            TOKEN_ADJUST_DEFAULT)
Private Const TOKEN_EXECUTE = (STANDARD_RIGHTS_EXECUTE)

Private Const TokenDefaultDacl = 6
Private Const TokenGroups = 2
Private Const TokenImpersonationLevel = 9
Private Const TokenOwner = 4
Private Const TokenPrimaryGroup = 5
Private Const TokenPrivileges = 3
Private Const TokenSource = 7
Private Const TokenStatistics = 10
Private Const TokenType = 8
Private Const TokenUser = 1

Private Declare Function InitiateSystemShutdown Lib "advapi32.dll" Alias "InitiateSystemShutdownA" (ByVal lpMachineName As String, ByVal lpMessage As String, ByVal dwTimeout As Long, ByVal bForceAppsClosed As Long, ByVal bRebootAfterShutdown As Long) As Long
Private Declare Function AbortSystemShutdown Lib "advapi32.dll" Alias "AbortSystemShutdownA" (ByVal lpMachineName As String) As Long
' ================================================================

Public Function WinError(ByVal lLastDLLError As Long) As String
Dim sBuff As String
Dim lCount As Long
  
  '返回與LastDLLError關(guān)聯(lián)的錯誤消息:
  sBuff = String$(256, 0)
  lCount = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM Or FORMAT_MESSAGE_IGNORE_INSERTS, _  
              0, lLastDLLError, 0&, sBuff, Len(sBuff), ByVal 0)  
  If lCount Then  
   WinError = Left$(sBuff, lCount)
  End If
  
End Function

Public Function IsNT() As Boolean
 Static bOnce As Boolean
 Static bValue As Boolean

  '返回系統(tǒng)是否為NT:
  If Not (bOnce) Then
   Dim tVI As OSVERSIONINFO
   tVI.dwOSVersionInfoSize = Len(tVI)
   If (GetVersionEx(tVI) <> 0) Then
    bValue = (tVI.dwPlatformId = VER_PLATFORM_WIN32_NT)
    bOnce = True
   End If
  End If
  IsNT = bValue
End Function

Private Function NTEnableShutDown(ByRef sMsg As String) As Boolean
 Dim tLUID As LUID
 Dim hProcess As Long
 Dim hToken As Long
 Dim tTP As TOKEN_PRIVILEGES, tTPOld As TOKEN_PRIVILEGES
 Dim lTpOld As Long
 Dim lR As Long

  '在NT下,我們必須給試圖關(guān)閉系統(tǒng)的進(jìn)程SE_SHUTDOWN_NAME特權(quán)
  '否則,所有企圖關(guān)閉系統(tǒng)的調(diào)用都會無效!

  '尋找Shoudown特權(quán)令牌的LUID:
  lR = LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, tLUID)
  
  '如果我們找到了  
  If (lR <> 0) Then
        
  '取得當(dāng)前進(jìn)程的句柄:
  hProcess = GetCurrentProcess()
  If (hProcess <> 0) Then
    '打開令牌來Adjust和Query(用戶可能沒有權(quán)限)
    lR = OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hToken)
    If (lR <> 0) Then
          
      '好,我們現(xiàn)在可以調(diào)整Shutdown特權(quán)了:
      With tTP
        .PrivilegeCount = 1
        With .Privileges(0)
        .Attributes = SE_PRIVILEGE_ENABLED
        .pLuid.HighPart = tLUID.HighPart
        .pLuid.LowPart = tLUID.LowPart
        End With
      End With
      
      '現(xiàn)在允許這個進(jìn)程關(guān)閉系統(tǒng):
      lR = AdjustTokenPrivileges(hToken, 0, tTP, Len(tTP), tTPOld, lTpOld)
      
      If (lR <> 0) Then
        NTEnableShutDown = True
      Else
        Err.Raise eeSSDErrorBase + 6, App.EXEName & ".mShutDown", "不能shutdown:你沒有關(guān)閉本系統(tǒng)的權(quán)限。[" & WinError(Err.LastDllError) & "]"
      End If
      
      '記得用完后關(guān)閉這個句柄:
      CloseHandle hToken
    Else
      Err.Raise eeSSDErrorBase + 6, App.EXEName & ".mShutDown", "不能shutdown:你沒有關(guān)閉本系統(tǒng)的權(quán)限。[" & WinError(Err.LastDllError) & "]"
    End If
  Else
    Err.Raise eeSSDErrorBase + 5, App.EXEName & ".mShutDown", "不能shutdown:不能終止當(dāng)前進(jìn)程。[" & WinError(Err.LastDllError) & "]"
  End If
  Else
  Err.Raise eeSSDErrorBase + 4, App.EXEName & ".mShutDown", "不能shutdown:找不到SE_SHUTDOWN_NAME特權(quán)值。[" & WinError(Err.LastDllError) & "]"
  End If

End Function


Public Function NTForceTimedShutdown( _
  Optional ByVal lTimeOut As Long = -1, _
  Optional ByVal sMsg As String = "", _
  Optional ByVal sMachineNetworkName As String = vbNullString, _
  Optional ByVal bForceAppsToClose As Boolean = False, _
  Optional ByVal bReboot As Boolean = False _
  ) As Boolean
 Dim lR As Long
  
  If IsNT Then
  '如果我們在NT下,確信我們已經(jīng)給了這個進(jìn)程關(guān)閉系統(tǒng)的特權(quán):
  If Not (NTEnableShutDown(sMsg)) Then
    Exit Function
  End If
  
  '這是定時關(guān)閉系統(tǒng)的代碼:
  lR = InitiateSystemShutdown(sMachineNetworkName, sMsg, lTimeOut, bForceAppsToClose, bReboot)
  If (lR = 0) Then
    Err.Raise eeSSDErrorBase + 2, App.EXEName & ".mShutDown", "InitiateSystemShutdown failed: " & WinError(Err.LastDllError)
  End If

  Else
  Err.Raise eeSSDErrorBase + 1, App.EXEName & ".mShutDown", "函數(shù)僅在Windows NT下有效。"
  End If
End Function


Public Function NTAbortTimedShutdown(Optional ByVal sMachineNetworkName As String = vbNullString)  
 AbortSystemShutdown sMachineNetworkName  
End Function  


  為了試驗一次shutdown,在窗體上放兩個Command按鈕和一個Text,然后粘貼一下代碼。注意,你必須在運行前保存你的工作,因為Shutdown也將關(guān)閉VB且不會給你任何有關(guān)保存的詢問!
  點擊Command1,它根據(jù)Text里的值開始一次定時關(guān)機。要終止Shutdown,點Command2。

Private Sub Command1_Click()
  If (MsgBox("你確定要強制定時關(guān)機嗎?", vbYesNo Or vbQuestion) = vbYes) Then
  NTForceTimedShutdown CLng(Text1.Text), "系統(tǒng)將在" & Text1.Text & "秒后關(guān)閉..."
End If
End Sub

Private Sub Command2_Click()
NTAbortTimedShutdown
End Sub

Private Sub Form_Load()
Text1.Text = 60
End Sub

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 国产美女18xxxx免费视频| 尤物网站在线看| 男人j进女人j| 污网站在线免费| 狠狠操精品视频| 国产午夜福利在线播放| 国产免费裸体视频| 日韩精品综合在线| 看全色黄大色大片| 国产精品啪啪啪视频| 91制片厂免费观看| 九九久久九九久久| 欧美精品卡一卡二| 久久久久久久午夜| 激情网站五月天| 日日躁夜夜躁aaaabbbb| 久久国产精品国产精品| 三级av免费观看| 中文字幕精品在线播放 | 成人高清在线观看视频| 激情黄色小视频| 一级黄色录像免费看| 国产日韩第一页| 无码中文字幕色专区| 免费国产a级片| 黄色在线视频网| 日韩视频在线观看视频| 久久久久久久9| 少妇人妻互换不带套| 中文字幕国产传媒| 欧美一二三不卡| 中文字幕乱码人妻综合二区三区| 成年人免费在线播放| 五月激情婷婷在线| 拔插拔插海外华人免费| 亚洲免费av一区二区三区| 亚洲最新免费视频| 北条麻妃在线视频观看| 亚洲综合欧美激情| 国产一线二线三线女| 国产精品秘入口18禁麻豆免会员 | 欧美极品少妇无套实战| 精品国产成人av在线免| 亚洲五月激情网| 国产偷人视频免费| 亚洲美女自拍偷拍| 无码日韩人妻精品久久蜜桃| 999热精品视频| 欧美自拍小视频| 免费网站在线观看视频 | 欧美一级黄色影院| 日本a在线天堂| 无尽裸体动漫2d在线观看| 欧美深夜福利视频| 欧美一级黄色录像片| 污版视频在线观看| 欧美二区在线视频| 日本免费黄色小视频| 日韩欧美国产片| 日韩av资源在线| 男人日女人逼逼| 国产又粗又猛又爽又黄的网站| 男人搞女人网站| 日本男人操女人| 能在线观看的av网站| 97超碰在线人人| www.激情网| 99热一区二区三区| 亚洲一区二区三区观看| 久热精品在线播放| 超碰人人草人人| 天天av天天操| 91免费视频黄| 成人高清dvd| 男人j进女人j| 日韩精品一区二区在线视频| 国产九九九视频| 国产树林野战在线播放| 中文字幕 欧美日韩| 国产三级生活片| 中文字幕在线乱| 最近免费观看高清韩国日本大全| 91欧美一区二区三区| | 超碰在线97免费| 亚洲36d大奶网| 91日韩精品视频| 国产香蕉一区二区三区| 一道本在线观看视频| 91看片淫黄大片91| 久久综合九色综合88i| 国产极品尤物在线| 色七七在线观看| 熟女视频一区二区三区| 亚洲天堂第一区| 色婷婷综合久久久久中文字幕| 亚洲欧美另类动漫| 三级在线免费观看| 青青艹视频在线| 久久久九九九热| www..com日韩| 亚洲天堂网2018| 男人天堂av片| 激情五月婷婷基地| 国产又粗又猛又爽又黄的网站 | 黄页网站大全在线观看| 999精品网站| 麻豆一区二区三区在线观看| 台湾无码一区二区| 中文字幕第80页| 男女日批视频在线观看| 色婷婷.com| 色综合av综合无码综合网站| 亚洲男人天堂2021| 人妻丰满熟妇av无码区app| 中文字幕在线中文| 欧美性猛交xxx乱久交| 国产免费裸体视频| 国产精品久久成人免费观看| 欧美黄色免费影院| 久青草视频在线播放| 亚洲综合激情视频| 日韩福利视频在线| 丰满的少妇愉情hd高清果冻传媒| 亚欧美在线观看| 热久久精品免费视频| 欧美国产日韩激情| 97超碰在线视| 激情六月天婷婷| 欧美性受xxxx黑人猛交88| gogogo高清免费观看在线视频| aⅴ在线免费观看| 男人用嘴添女人下身免费视频| 一本二本三本亚洲码| 日本肉体xxxx裸体xxx免费| 波多野结衣家庭教师视频| 久青草视频在线播放| 日本a级片在线观看| 7777在线视频| 高清无码视频直接看| 2022中文字幕| 欧美精品卡一卡二| 三上悠亚久久精品| 哪个网站能看毛片| 日韩在线第三页| 污污网站免费观看| 一本—道久久a久久精品蜜桃| 国产区二区三区| 成人av毛片在线观看| 国产成人在线综合| 影音先锋成人资源网站| 狠狠精品干练久久久无码中文字幕| 三上悠亚免费在线观看| 国产 国语对白 露脸| 麻豆tv在线播放| 国产精品亚洲a| 国产乱女淫av麻豆国产| dy888午夜| 精品中文字幕av| 永久免费的av网站| 男女裸体影院高潮| 国产乱子伦农村叉叉叉| 男人搞女人网站| 天天干天天色天天爽| 日韩在线综合网| 三级黄色片免费观看| 国产日本在线播放| 欧美伦理片在线观看| 日韩一级特黄毛片| 欧美丰满熟妇xxxxx| 久久国产精品免费观看| 黄色免费福利视频| 自拍一级黄色片| 无码人妻丰满熟妇区五十路百度| 超碰人人草人人| 六月丁香婷婷激情| 国内外成人激情免费视频| 国产精品亚洲a| 日本香蕉视频在线观看| 538在线视频观看| 奇米777四色影视在线看| 五月婷婷之综合激情| 欧美大黑帍在线播放| 无尽裸体动漫2d在线观看| 黄色一级视频在线播放| 性欧美18一19内谢| 蜜臀一区二区三区精品免费视频| 国产激情片在线观看| 538在线视频观看| 激情五月开心婷婷| 成年人看的毛片| 欧美高清中文字幕| 手机av在线网| www午夜视频| 91视频免费版污| 欧美私人情侣网站| 日本精品免费在线观看| 国产欧美日韩小视频| 欧美a级免费视频| 男人添女人下部视频免费|