【问题标题】:Creat shortcut file using VBScript that runs a program as administrator使用以管理员身份运行程序的 VBScript 创建快捷方式文件
【发布时间】:2014-09-27 06:18:15
【问题描述】:

我正在使用 VBScript 创建快捷方式。不过我的问题是我想创建一个打开了“以管理员身份运行”标志的快捷方式。我已经调查过了,但没有找到任何选择。我错过了什么吗?

PS:我是 VBScript 的新手。

假代码示例:

Set oWS = WScript.CreateObject("WScript.Shell")
sLinkFile = "%AppData%\Microsoft\Windows\Start Menu\Programs\Startup\ProcessExplorerPortable.lnk"
Set oLink = oWS.CreateShortcut(sLinkFile)
oLink.TargetPath = "H:\Documents\PortableApps\ProcessExplorerPortable\ProcessExplorerPortable.exe /t"
oLink.AdminFlag = true
oLink.Save

【问题讨论】:

    标签: windows vbscript shortcuts


    【解决方案1】:

    有两种方法。

    1. 快捷方式的格式是一个开放的规范MS-SHLINK。使用 CreateShortcut 创建快捷方式,然后按照此答案Read and Write binary file 中的描述使用 ADODB 修改字节 21 处的标志:将位 6 (0x20) 更改为 1,如此答案中所述:Using Power Shell

    2. 只需将管理快捷方式粘贴到您的脚本中即可。这是使用SFX 编写脚本的 c:\Windows\Notepad.exe 的以管理员​​身份运行的快捷方式:

      Sub Create_admin_Shortcut(strOutFile)
      Dim ts, x
       Set ts = CreateObject("Scripting.FileSystemObject").OpenTextFile(strOutFile, 2, True)
       For x = 1 To 511 Step 2 : ts.Write Chr(Clng("&H" & Mid("4C0000000114020000000000C0000000000000468320000020000000B23CE744CDD3C901A81097725EB5D60100D781829E9DC801000E01000000000001000000000000000000000000000000B30014001F50E04FD020EA3A6910A2D808002B30309D19002F433A5C000000000000000000000000000000000000003C003100000000005B5145BA100057494E444F575300260003000400EFBEAD3A61696751B3BA14000000570049004E0044004F00570053000000160048003200000E01008D384F9D20006E6F74657061642E657865002E0003000400EFBEAD3A476A67513ABC140000006E006F00740065007000610064002E0065007800650000001A0000",x,2))) : Next
       For x = 1 To 372 Step 2 : ts.Write Chr(Clng("&H" & Mid("00450000001C000000010000001C0000002D00000000000000440000001100000003000000086540FC1000000000433A5C57494E444F57535C6E6F74657061642E657865000060000000030000A05800000000000000626C61636B626F78000000000000000014950DA77200E64181B4C070903D9334ABDD389EB818EB11A7AC0014852134EE14950DA77200E64181B4C070903D9334ABDD389EB818EB11A7AC0014852134EE10000000050000A0240000006900000000000000",x,2))) : Next
       ts.Close
      End Sub 
      

      并修改脚本以指向您想要的任何内容:

      Create_admin_shortcut(sShortCut)
      Set wsh = CreateObject("Wscript.Shell")
      set lnk = wsh.CreateShortcut(sShortCut)
        lnk.TargetPath = """" & WScript.FullName & """"
        lnk.Arguments = """" & WScript.ScriptFullName & """"
      lnk.Save
      

      正如here 所讨论的,以这种方式使用文件系统对象创建文件会在非英语或多字节语言环境中出错。不幸的是,字节 4-20 是一个不能更改的 CLSID:字节 13 包含的值 &HC0 在某些语言环境中会失败。如果这是一个问题,SHAR 使用 ADODB 执行相同的编码。

    【讨论】:

      【解决方案2】:
      cmd /c set __compat_layer=requireAdministrator & H:\Documents\PortableApps\ProcessExplorerPortable\ProcessExplorerPortable.exe /t
      

      设置一个指定兼容性的环境变量(requireadmin),然后启动您的程序。 & 分隔命令。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-13
        • 2016-08-31
        • 2012-06-25
        • 2011-05-07
        • 1970-01-01
        • 1970-01-01
        • 2011-11-15
        相关资源
        最近更新 更多