如何正确显示气球提示?

Hac*_*koo 6 powershell batch-file

我正在为( "vbs" ,"vbe" ,"wsf", "a3x")注册表中的某些已知病毒密钥编写清理程序.

我想用powershell在powershell中添加一个BalloonTip,但是有些错误!

我不知道如何从任务栏中删除图标以显示进度扫描?

这是一个草案.它还没有优化!

@echo off
Title Hackoo Virus Cleaner to delete virus key from registry by Hackoo 2016
Color 1A & Mode con cols=80 lines=8
Set Pattern="\.vbs"^
^ "\.vbe"^
^ "\.wsf"^
^ "\.a3x"^
^ "VBScript.Encode"^
^ "\winlogon\.bat"

Set Key="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"^
^ "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"^
^ "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"^
^ "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options"

For %%P in (%Pattern%) Do (
        For %%K in (%Key%) Do (     
            Cls 
            echo(
            echo(
            Echo         ***************************** Scan *****************************
            echo             %%K
            Echo         ****************************************************************
            Call :PS_Sub 'Warning' 10 '" Please wait... "' "' Scan is in progress.... %%K'" 'Warning'
            Call :Delete_Virus_Key %%K %%P "%TmpLogFile%"
        )
)
exit /b
::*************************************************************************
:Delete_Virus_Key <Key> <Pattern> <LogFile>
Setlocal enabledelayedexpansion
for /f "delims=REG_SZ" %%I in (
    'reg query "%~1" /s^|findstr /ic:"%~2"'
    )   Do  ( 
                If %ErrorLevel% NEQ 1 (
                    Set KeyName="%%~I"
                    (
                        Call:Trim !keyName!
                        Title Deleting Run key: !keyName!
                        echo Deleting Run key: !keyName!
                        echo reg delete "%~1" /v !keyName! /f
                        echo(
                        echo *****************************
                        echo reg delete "%~1" /v "!keyName!" /f
                        echo *****************************
                        echo(
                    )>>"%~3"
                    rem Call :PS_Sub 'Warning' 100 '"!KeyName!"' "'Delete !KeyName!'" 'Warning'
                ) else (
                    Set KeyName="%%~I"
                    Call:Trim !keyName!
                    Title Deleting Run key: !keyName!
                    echo Deleting Run key: !keyName!
                    echo reg delete "%~1" /v !keyName! /f
                    echo(
                    echo *****************************
                    echo reg delete "%~1" /v "!keyName!" /f
                    echo *****************************
                    echo(
                )>>"%~3"
            )       
)
EndLocal
Exit /b
::*************************************************************************
:Trim <String>
(
    echo Wscript.echo Trim("%~1"^)
)>"%tmp%\%~n0.vbs"
for /f "delims=" %%a in ('Cscript /nologo "%tmp%\%~n0.vbs"') do ( 
    set "KeyName=%%a" 
)
exit /b
::**************************************************************************
:PS_Sub $notifyicon $time $title $text $icon
PowerShell  ^
  [reflection.assembly]::loadwithpartialname('System.Windows.Forms') ^| Out-Null; ^
  [reflection.assembly]::loadwithpartialname('System.Drawing') ^| Out-Null; ^
  $notify = new-object system.windows.forms.notifyicon; ^
  $notify.icon = [System.Drawing.SystemIcons]::%1; ^
  $notify.visible = $true; ^
  $notify.showballoontip(%2,%3,%4,%5)
%End PowerShell%
exit /B
::*************************************************************************
Run Code Online (Sandbox Code Playgroud)

因此,为了简化我的问题,我们只关注这个功能:

我应该在这里添加什么来摆脱任务栏中的notifyicon?

::**************************************************************************
:PS_Sub $notifyicon $time $title $text $icon
PowerShell  ^
  [reflection.assembly]::loadwithpartialname('System.Windows.Forms') ^| Out-Null; ^
  [reflection.assembly]::loadwithpartialname('System.Drawing') ^| Out-Null; ^
  $notify = new-object system.windows.forms.notifyicon; ^
  $notify.icon = [System.Drawing.SystemIcons]::%1; ^
  $notify.visible = $true; ^
  $notify.showballoontip(%2,%3,%4,%5)
%End PowerShell%
exit /B
::*************************************************************************
Run Code Online (Sandbox Code Playgroud)

Hac*_*koo 3

感谢 @rojo 这样的想法,我解决了这个问题:

::**************************************************************************
:PS_Sub $notifyicon $time $title $text $icon $Timeout
PowerShell  ^
  [reflection.assembly]::loadwithpartialname('System.Windows.Forms') ^| Out-Null; ^
  [reflection.assembly]::loadwithpartialname('System.Drawing') ^| Out-Null; ^
  $notify = new-object system.windows.forms.notifyicon; ^
  $notify.icon = [System.Drawing.SystemIcons]::%1; ^
  $notify.visible = $true; ^
  $notify.showballoontip(%2,%3,%4,%5); ^
  Start-Sleep -s %6; ^
  $notify.Dispose()
%End PowerShell%
exit /B
::*************************************************************************
Run Code Online (Sandbox Code Playgroud)

因此,如果有人想在测试版中测试整个代码,请点击以下链接:

Hackoo 病毒清理器

在此输入图像描述