hide console for running base64 by starting from vbs itself
so cmd script for ToastRunPSBase64 is not needed anymore
This commit is contained in:
parent
49888017a6
commit
07d3a83d36
1 changed files with 20 additions and 42 deletions
|
|
@ -879,7 +879,7 @@ function Write-CustomActionRegistry() {
|
||||||
# FTA_SafeForElevation - 0x00200000
|
# FTA_SafeForElevation - 0x00200000
|
||||||
# https://msdn.microsoft.com/en-us/library/windows/desktop/bb762506(v=vs.85).aspx
|
# https://msdn.microsoft.com/en-us/library/windows/desktop/bb762506(v=vs.85).aspx
|
||||||
New-ItemProperty -LiteralPath "HKCU:\Software\Classes\$($ActionType)" -Name 'EditFlags' -Value '0x210000' -PropertyType Dword -Force -ErrorAction SilentlyContinue | Out-Null
|
New-ItemProperty -LiteralPath "HKCU:\Software\Classes\$($ActionType)" -Name 'EditFlags' -Value '0x210000' -PropertyType Dword -Force -ErrorAction SilentlyContinue | Out-Null
|
||||||
$RegCommandValue = "wscript.exe $RegCommandPath\ToastRunScriptWithoutGUI.vbs" + " " + $RegCommandPath + '\' + "$($ActionType).cmd `"%1`"" # %1 in quotes because it contains equal sign, which will be otherwise removed
|
$RegCommandValue = "wscript.exe $RegCommandPath\ToastRunScriptWithoutGUI.vbs" + " " + "`"%1`"" # %1 in quotes because it contains equal sign, which will be otherwise removed
|
||||||
New-ItemProperty -LiteralPath "HKCU:\Software\Classes\$($ActionType)\shell\open\command" -Name '(default)' -Value $RegCommandValue -PropertyType String -Force -ErrorAction SilentlyContinue | Out-Null
|
New-ItemProperty -LiteralPath "HKCU:\Software\Classes\$($ActionType)\shell\open\command" -Name '(default)' -Value $RegCommandValue -PropertyType String -Force -ErrorAction SilentlyContinue | Out-Null
|
||||||
} catch {
|
} catch {
|
||||||
Write-Log -Level Error "Failed to create the $ActionType custom protocol in HKCU\Software\Classes. Action button might not work"
|
Write-Log -Level Error "Failed to create the $ActionType custom protocol in HKCU\Software\Classes. Action button might not work"
|
||||||
|
|
@ -1073,41 +1073,6 @@ exit 0
|
||||||
# Do not run another type; break
|
# Do not run another type; break
|
||||||
Break
|
Break
|
||||||
}
|
}
|
||||||
# Create custom scripts to run PowerShell command encoded as Base64 directly from the action button
|
|
||||||
ToastRunPSBase64 {
|
|
||||||
try {
|
|
||||||
$CMDFileName = $Type + '.cmd'
|
|
||||||
$CMDFilePath = $Path + '\' + $CMDFileName
|
|
||||||
try {
|
|
||||||
New-Item -Path $Path -Name $CMDFileName -Force -OutVariable PathInfo | Out-Null
|
|
||||||
} catch {
|
|
||||||
$ErrorMessage = $_.Exception.Message
|
|
||||||
Write-Log -Level Error -Message "Error message: $ErrorMessage"
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
$GetCustomScriptPath = $PathInfo.FullName
|
|
||||||
[String]$Script = "
|
|
||||||
set passedArg=%~1
|
|
||||||
:: remove part before : from passed string
|
|
||||||
set base64=%passedArg:*:=%
|
|
||||||
powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -EncodedCommand %base64%"
|
|
||||||
if (-NOT[string]::IsNullOrEmpty($Script)) {
|
|
||||||
Out-File -FilePath $GetCustomScriptPath -InputObject $Script -Encoding ASCII -Force
|
|
||||||
}
|
|
||||||
} catch {
|
|
||||||
Write-Log -Level Error "Failed to create the custom .cmd script for $Type. Action button might not work"
|
|
||||||
$ErrorMessage = $_.Exception.Message
|
|
||||||
Write-Log -Level Error -Message "Error message: $ErrorMessage"
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch {
|
|
||||||
Write-Log -Level Error "Failed to create the custom .cmd script for $Type. Action button might not work"
|
|
||||||
$ErrorMessage = $_.Exception.Message
|
|
||||||
Write-Log -Level Error -Message "Error message: $ErrorMessage"
|
|
||||||
}
|
|
||||||
# Do not run another type; break
|
|
||||||
Break
|
|
||||||
}
|
|
||||||
ToastRunScriptWithoutGUI {
|
ToastRunScriptWithoutGUI {
|
||||||
try {
|
try {
|
||||||
$VBSFileName = 'ToastRunScriptWithoutGUI.vbs'
|
$VBSFileName = 'ToastRunScriptWithoutGUI.vbs'
|
||||||
|
|
@ -1123,27 +1088,40 @@ powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -Windo
|
||||||
Set WshShell = WScript.CreateObject("WScript.Shell")
|
Set WshShell = WScript.CreateObject("WScript.Shell")
|
||||||
|
|
||||||
' regex to distinguish ps1 scripts
|
' regex to distinguish ps1 scripts
|
||||||
Set re = New RegExp
|
Set runPs1 = New RegExp
|
||||||
With re
|
With runPs1
|
||||||
.Pattern = "\.ps1$"
|
.Pattern = "\.ps1$"
|
||||||
.IgnoreCase = True
|
.IgnoreCase = True
|
||||||
.Global = False
|
.Global = False
|
||||||
End With
|
End With
|
||||||
|
' regex to distinguish base64
|
||||||
|
Set runBase64 = New RegExp
|
||||||
|
With runBase64
|
||||||
|
.Pattern = "^toastrunpsbase64:"
|
||||||
|
.IgnoreCase = True
|
||||||
|
.Global = False
|
||||||
|
End With
|
||||||
|
|
||||||
If Wscript.Arguments.Count < 1 Or Wscript.Arguments.Count > 2 Then
|
If Wscript.Arguments.Count < 1 Or Wscript.Arguments.Count > 2 Then
|
||||||
wscript.echo "ERROR, you have to enter one or two argument(s)! First has to be the path to cmd file to run and voluntarily second one as CMDs file argument"
|
wscript.echo "ERROR, you have to enter one or two argument(s)! First has to be the path to cmd file to run and voluntarily second one as CMDs file argument"
|
||||||
ElseIf Wscript.Arguments.Count = 1 Then
|
ElseIf Wscript.Arguments.Count = 1 Then
|
||||||
If re.Test( WScript.Arguments(0) ) Then
|
If runPs1.Test( WScript.Arguments(0) ) Then
|
||||||
' it is ps1 script
|
' it is ps1 script
|
||||||
WshShell.Run "cmd /c powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -File" & " " & """" & WScript.Arguments(0) & """", 0, True
|
WshShell.Run "cmd /c powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -File" & " " & """" & WScript.Arguments(0) & """", 0, True
|
||||||
|
ElseIf runBase64.Test( WScript.Arguments(0) ) Then
|
||||||
|
' it is base64 string
|
||||||
|
'remove part before : from passed string to get just base64
|
||||||
|
base64 = WScript.Arguments(0)
|
||||||
|
base64 = Mid(base64,instr(base64,":")+1)
|
||||||
|
WshShell.Run "cmd /c powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -EncodedCommand" & " " & """" & base64 & """", 0, True
|
||||||
Else
|
Else
|
||||||
' it isn't ps1 script
|
' it is something else
|
||||||
WshShell.Run """" & WScript.Arguments(0) & """", 0, True
|
WshShell.Run """" & WScript.Arguments(0) & """", 0, True
|
||||||
End If
|
End If
|
||||||
ElseIf Wscript.Arguments.Count = 2 Then
|
ElseIf Wscript.Arguments.Count = 2 Then
|
||||||
'wscript.echo WScript.Arguments(0)
|
'wscript.echo WScript.Arguments(0)
|
||||||
'wscript.echo WScript.Arguments(1)
|
'wscript.echo WScript.Arguments(1)
|
||||||
If re.Test( WScript.Arguments(0) ) Then
|
If runPs1.Test( WScript.Arguments(0) ) Then
|
||||||
' it is ps1 script
|
' it is ps1 script
|
||||||
WshShell.Run "cmd /c powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -File" & " " & """" & WScript.Arguments(0) & """" & " " & """" & WScript.Arguments(1) & """", 0, True
|
WshShell.Run "cmd /c powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -File" & " " & """" & WScript.Arguments(0) & """" & " " & """" & WScript.Arguments(1) & """", 0, True
|
||||||
Else
|
Else
|
||||||
|
|
@ -1175,7 +1153,7 @@ Set WshShell = Nothing
|
||||||
######### GENERAL VARIABLES #########
|
######### GENERAL VARIABLES #########
|
||||||
# Global variables
|
# Global variables
|
||||||
# Setting global script version
|
# Setting global script version
|
||||||
$global:ScriptVersion = "2.1.2"
|
$global:ScriptVersion = "2.1.6"
|
||||||
# Setting executing directory
|
# Setting executing directory
|
||||||
$global:ScriptPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
$global:ScriptPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
||||||
# Setting global custom action script location
|
# Setting global custom action script location
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue