用 PowerShell 屏蔽腾讯 QQ 秀

我们在 用 PowerShell 屏蔽腾讯 QQ 的广告 这篇文章中介绍过了如何屏蔽 QQ 聊天窗口的横幅广告,那么如何屏蔽 QQ 秀的广告呢?请参见 QQ2013 删除QQ秀广告

但是其中的步骤有点繁琐。我们把整个流程用 PowerShell 写一遍,对于用户只要执行一下即可:

$folder = "${env:ProgramFiles}\Tencent\QQ\Plugin\Com.Tencent.QQShow\"
$folder
$rdbFile = Join-Path $folder 'Bundle.rdb'
$rdbDir = Join-Path $folder 'Bundle'

$xmlPath = Join-Path $folder 'Bundle\I18N\2052\UrlBundle.xml'

if (Test-Path "$rdbFile.bak") {
    Write-Warning "$rdbFile.bak 文件已存在,请确认是否已经替换?"
    Write-Warning "程序退出。"
    return
}

$rdbFile
.\RDB.exe """$rdbFile"""
move $rdbFile "$rdbFile.bak"
.\D4QQenc.exe (Join-Path $folder 'Bundle\I18N\2052\UrlBundle.xml.enc')

del (Join-Path $folder 'Bundle\I18N\2052\UrlBundle.xml.enc')

[xml]$urlBundle = Get-Content $xmlPath -Encoding UTF8 | where { $_ -ne '' }

@('IDS_QQSHOW_MARKET', 'IDS_3DSHOW_MARKET', 'IDS_FLASHSHOW_MARKET') | foreach {
    $id = $_
    ($urlBundle.StringBundle.String | where { $_.id -eq $id })."#text" = ''
}
$urlBundle.OuterXml | Set-Content $xmlPath -Encoding UTF8

.\RDB.exe """$rdbDir"""

您也可以从这里 下载 写好的脚本,祝您使用愉快。
本方法在 QQ2013(SP6) 上验证通过。

用 PowerShell 屏蔽腾讯 QQ 的广告

非会员 QQ,在对话窗口的右上角会显示一个广告横幅,如图所示:

我们可以将 %appdata%\Tencent\Users\QQ号\QQ\Misc.db 文件删除并且替换成一个同名文件夹,就可以屏蔽该广告:

如果您有多个 QQ 号的话,我们可以用 PowerShell 来批量完成该任务:

echo '本脚本用于屏蔽 QQ 对话窗口右上方的广告条。'
Read-Host '请关闭所有 QQ,按回车键继续' | Out-Null

$usersDir = "$($env:AppData)\Tencent\Users\"
dir $usersDir -Directory | foreach {
    $qq = $_
    $qqDir = Join-Path $_.FullName 'QQ'
    $miscDb = Join-Path $qqDir Misc.db
    if (Test-Path -PathType Leaf $miscDb) {
        echo "正在禁用 $qq 的广告"
        del $miscDb
        md $miscDb | Out-Null
    }
}
exit
echo '处理完毕。'

您也可以从这里 下载 写好的脚本,祝您使用愉快。
本方法在 QQ2013(SP6) 上验证通过。