• 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/


                  


  • 相关阅读:
    fstream之seekp/seekg/ios::ate/ios::app
    undefined reference to `shm_unlink'
    extern "C"用法
    CentOS 6.2 安装kdbg
    ROW模式的SQL无法正常同步的问题总结
    Mysql之sync-binlog参数
    本地连接远程环境mysql报错:Host'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
    64位linux下rpm安装mysql的5.5.55版本所遇到的坑
    jquery中ajax异步调用接口
    jquery调用spring mvc接口返回字符串匹配
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6885607.html
Copyright © 2020-2023  润新知