zoukankan      html  css  js  c++  java
  • VBScripts and UAC elevation(visa以后的系统)

    这两天由于工作须要。在写一些vbs的脚本。才知道,vbs不能像其它可运行文件一样,在 须要提升訪问权限时,弹出UAC窗体。那么,怎样通过UAC提升vbs脚本的訪问权限呢?

    查了一些资料,将结果整理一下:

    第一种:

    If WScript.Arguments.length =0 Then
      Set objShell = CreateObject("Shell.Application")
      'Pass a bogus argument with leading blank space, say [ uac]
      objShell.ShellExecute "wscript.exe", Chr(34) & _
      WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
    Else
      'Add your code here
    End If
    
    
    

    另外一种:

    Set objShell = CreateObject("Shell.Application")
    Set FSO = CreateObject("Scripting.FileSystemObject")
    strPath = FSO.GetParentFolderName (WScript.ScriptFullName)
    If FSO.FileExists(strPath & "MAIN.VBS") Then
         objShell.ShellExecute "wscript.exe", _ 
            Chr(34) & strPath & "MAIN.VBS" & Chr(34), "", "runas", 1
    Else
         MsgBox "Script file MAIN.VBS not found"
    End If 
    
    

    第三种:

    'Checks if the script is running elevated (UAC)
    function isElevated  
        Set shell = CreateObject("WScript.Shell")  
        Set whoami = shell.Exec("whoami /groups")  
        Set whoamiOutput = whoami.StdOut  
        strWhoamiOutput = whoamiOutput.ReadAll   
        If InStr(1, strWhoamiOutput, "S-1-16-12288", vbTextCompare) Then
            isElevated = True  
        Else
            isElevated = False  
        End If
    end function
    
    'Re-runs the process prompting for priv elevation on re-run
    sub uacPrompt
      
      'Check if we need to run in C or W script
      interpreter = "wscript.exe"
      If Instr(1, WScript.FullName, "CScript", vbTextCompare) = 0 Then
        interpreter = "wscript.exe"
      else
        interpreter = "cscript.exe"
      end if
    
      'Start a new instance with an elevation prompt first
      Set shellApp = CreateObject("Shell.Application")
      shellApp.ShellExecute interpreter, Chr(34) & WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
    
      'End the non-elevated instance
      WScript.Quit
    end sub
    
    'Make sure we are running elevated, prompt if not
    if not isElevated Then uacPrompt
    
    'Add your code here
    MsgBox "hello world"


    UAC的效果图:

                                                                          

    參考地址:

    http://www.winhelponline.com/articles/185/1/VBScripts-and-UAC-elevation.html

    http://www.kellestine.com/self-elevate-vbscript/


                  


  • 相关阅读:
    output (Elements) – HTML 中文开发手册
    JavaSE IO类层次关系和Java IO流的用法总结
    PHP attributes() 函数
    math_errhandling (Numerics) – C 中文开发手册
    C while 循环
    HTML <a> hreflang 属性
    static_assert (Error handling) – C 中文开发手册
    C 嵌套 switch 语句
    HTML DOM Input Time name 属性
    Bootstrap 弹出框
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6885607.html
Copyright © 2011-2022 走看看