使用以管理员身份运行程序的VB脚本创建快捷方式文件

时间:2014-08-04 17:32:42

标签: windows vbscript shortcuts

我正在使用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

2 个答案:

答案 0 :(得分:0)

cmd /c set __compat_layer=requireAdministrator & H:\Documents\PortableApps\ProcessExplorerPortable\ProcessExplorerPortable.exe /t

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

答案 1 :(得分:0)

有两种方法。

  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进行相同的编码。