How to create a Run As Administrator shortcut using Powershell

后端 未结 2 805
独厮守ぢ
独厮守ぢ 2020-11-30 09:44

In my PowerShell script, I create a shortcut to a .exe (using something similar to the answer from this question):

$WshShell = New-Object -comObject WScript.         


        
相关标签:
2条回答
  • 2020-11-30 10:28

    This answer is a PowerShell translation of an excellent answer to this question How can I use JScript to create a shortcut that uses "Run as Administrator".

    In short, you need to read the .lnk file in as an array of bytes. Locate byte 21 (0x15) and change bit 6 (0x20) to 1. This is the RunAsAdministrator flag. Then you write you byte array back into the .lnk file.

    In your code this would look like this:

    $WshShell = New-Object -comObject WScript.Shell
    $Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ColorPix.lnk")
    $Shortcut.TargetPath = "C:\Program Files (x86)\ColorPix\ColorPix.exe"
    $Shortcut.Save()
    
    $bytes = [System.IO.File]::ReadAllBytes("$Home\Desktop\ColorPix.lnk")
    $bytes[0x15] = $bytes[0x15] -bor 0x20 #set byte 21 (0x15) bit 6 (0x20) ON
    [System.IO.File]::WriteAllBytes("$Home\Desktop\ColorPix.lnk", $bytes)
    

    If anybody want to change something else in a .LNK file you can refer to official Microsoft documentation.

    0 讨论(0)
  • 2020-11-30 10:41

    You can use the -Elevate true switch for this:

        CreateShortcut -name "myApp" -Target 
        "${env:ProgramFiles}\mApp\myApp.exe" -OutputDirectory 
        "C:\Users\Public\Desktop" -Elevated True
    
    0 讨论(0)
提交回复
热议问题