如何防止每次更新 Java 时都安装 Ask.com Toolbar?

abs*_*ask 230 java toolbar bloatware software-bundling

正如许多人痛苦地意识到的那样,Oracle 不仅继续将 Java 安装与来自 Ask.com 的无用的 Internet 浏览器工具栏捆绑在一起,而且还在默认情况下启用其安装。除了工具栏,Ask 还用 Ask 替换了浏览器中您最喜欢的搜索引擎。

此外,Java 安装实际上建议安装这个无用的垃圾,这意味着任何不精通 IT 的人都更有可能对其进行检查并安装它(毕竟,它在默认情况下是启用的,友好的 Java 安装程序确实推荐它,对吗?)。

雪上加霜的是,即使您删除了询问工具栏,您也可以确保很快再次看到它,当下一个 Java 更新命中您时(由于 Java 的大量安全修复程序,这似乎最近经常发生,但是那是另一个故事)。

每当我更新 Java 时,我都会及时删除安装 Ask Toolbar 的复选标记,但是在支持我的家人和朋友时,很明显他们没有。

如何首先防止安装讨厌的 Ask.com 工具栏?

Dan*_*cio 248

更新 2016-02-21:似乎不再使用下面的旧注册表项来禁用赞助商。由于 Java 7u65 和 8u11(Mac OS X 上为 8u40),支持直接通过 Java 控制面板禁用赞助商优惠的方法。在 Windows 中:

Control Panel ? Java ? Advanced ? Miscellaneous (scroll to bottom) ?Suppress sponsor offers when installing or updating Java

从 7u55(Mac OS X 上的 8u40)开始,您还可以通过运行带有特殊参数的 Java 安装程序的命令行禁用赞助商优惠:

jre-7u55-windows-i586-iftw.exe SPONSORS=0

对于那些仍然需要以编程方式禁用赞助商的人,现在似乎只需添加以下行C:\ProgramData\Oracle\Java\java.settings.cfg(如果不存在则创建一个新文件)。

SPONSORS=0
Run Code Online (Sandbox Code Playgroud)

请注意,最后一种方法没有记录且不受支持,就像旧方法一样!


更新 2016-02-21:以下是禁用赞助商的旧方法,它仅适用于 7u65 以下的 Java 版本。对于较新的 Java 版本,请参见上文。我自己深入研究了这个问题,我发现在自动更新安装程序中有一个隐藏的开关来禁用赞助商优惠。

在 Windows 注册表编辑器 ( regedit.exe) 中打开以下键:

  • HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft (仅适用于 Windows 64 位)

并在它们两个中创建一个名为value的新String Value(类型REG_SZ)(名称和值都必须是大写)。SPONSORSDISABLE

或者,将以下代码复制并粘贴到名为的文本文件中,disable_java_sponsors.reg然后双击它以将这些值导入到您的注册表中。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft]
"SPONSORS"="DISABLE"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft]
"SPONSORS"="DISABLE"
Run Code Online (Sandbox Code Playgroud)

请注意,此开关不仅会禁用 Ask.com 工具栏安装和提示,还会禁用可能与自动更新设置/在线设置捆绑在一起的所有赞助商(Google 工具栏、Yahoo 工具栏、McAfee 等...)


另一种无需下载和重命名或创建新.REG文件的方法是将以下两行复制并粘贴到提升的 CMD 提示符中:

reg add HKLM\SOFTWARE\JavaSoft /v "SPONSORS" /t REG_SZ /d "DISABLE" /f 
reg add HKLM\SOFTWARE\Wow6432Node\JavaSoft /v "SPONSORS" /t REG_SZ /d "DISABLE" /f
Run Code Online (Sandbox Code Playgroud)

  • 这是一个非常简洁优雅的解决方案。不错的发现!让我们希望 Java 继续遵守该注册表设置,不要突然决定使用另一个值 - 你知道,只是为了推动赞助商软件通过;-) (13认同)
  • 我只是想确认 SPONSORS=DISABLE 选项也适用于我。它现在是我们工作站 GPO 的一部分。 (7认同)
  • 我刚刚使用 Java RE 7 更新 17 在虚拟机中测试了注册表设置。 Ask 工具栏确实没有安装。甜的!我比我自己更喜欢这个修复,所以我会改变这个接受的答案。谢谢!:-) (3认同)
  • 为方便起见,可下载文件:http://pastebin.com/download.php?i=iTkxyPum (2认同)
  • 年度最佳答案!!!! (2认同)

abs*_*ask 46

编辑 2014-02-02:使用 JavaRE 7u51,Ask 工具栏现在安装到名为“AskPartnerNetwork”而不是“Ask.com”的子文件夹中。人们可能会怀疑这有什么意义......同时,@Danilo Roascio 的注册表值仍然得到遵守并且和以前一样有效。

这只是强调了简单的注册表修复仍然是最简单和最好的解决方案。如果 Java 安装程序发生更改,从而忽略此注册表值,仍可使用以下脚本作为解决方法 - 只需确保更新 Ask Toolbar 路径即可。


我能想到的防止再次安装 Ask Toolbar 的最简单方法是创建 Ask Toolbar 安装的文件夹并修改权限,因此没有人可以写入它。

首先,确保已删除询问工具栏。然后将以下代码复制到记事本,将其另存为 .cmd 文件并在提升的命令提示符下运行它:

REM Detect processor architecture
set proc_arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" ( 
    if not defined PROCESSOR_ARCHITEW6432 set proc_arch=x86
) 

REM Define Ask Toolbar path
if "%proc_arch%" == "x86" set AskPath=%ProgramFiles%\Ask.com
if "%proc_arch%" == "x64" set AskPath=%ProgramFiles(x86)%\Ask.com
set AskReadme=%AskPath%\..\Ask.com_ReadMe.txt
set AskRevert=%AskPath%\..\Ask.com_RestorePermissions.cmd

REM Create dummy Ask Toolbar folder
md "%AskPath%"

REM Add explanatory text file, as to why the dummy folder is there
echo The 'Ask.com' folder is has been created and write protected,> "%AskReadme%"
echo in order to prevent Ask.com Toolbar from being 'accidentally'>> "%AskReadme%"
echo installed, e.g. by Java.>> "%AskPath%\readme.txt">> "%AskReadme%"
echo.>> "%AskReadme%"
echo This has been done using ICACLS by denying write access to the>> "%AskReadme%"
echo EVERYONE security group.>> "%AskReadme%"
echo.>> "%AskReadme%"
echo To revert permissions run:>> "%AskReadme%"
echo %AskRevert%>> "%AskReadme%"

REM Create script to remove restrictions
echo icacls "%AskPath%" /remove:d *S-1-1-0> "%AskRevert%"

REM Deny everyone (SID: S-1-1-0) write access
icacls "%AskPath%" /deny *S-1-1-0:(OI)(CI)W
Run Code Online (Sandbox Code Playgroud)

请注意: ICACLS 包含在 Windows Vista 和更高版本中。您可以通过 Microsoft KB919240下载适用于 Windows XP/Server 2003 的ICACLS,或通过KB943043 下载更新版本(但必须首先请求后者,之后您将通过电子邮件收到一个链接以供下载)。为此,两个版本应该同样有效。

我已经通过 Java 1.7 更新 13 的安装程序验证,即使我选中复选框,Ask Toolbar 确实没有安装。

类似的方法很可能用于阻止大多数其他类型的搭载垃圾软件。

编辑 #1

Windows 资源管理器怪癖:访问被拒绝

如果您尝试打开文件夹,Windows 资源管理器的行为会有点奇怪。即使您仍然对该文件夹具有读访问权限,Windows 资源管理器也会告诉您访问被拒绝,即使只有写访问被拒绝。

如果您一开始只是被分配了读取访问权限,则不会发生这种情况,但是当您被分配对该文件夹的读/写权限然后被拒绝写入访问权限时,似乎会发生这种情况。

恢复权限

该脚本已更新以添加“自述”文本文件和用于再次取消限制的脚本。两者都存储在 32 位程序文件文件夹中。

  • 我建议在文件夹内留下一个文本文件,解释为什么“ask.com”文件夹在那里以及它的设计目的。这样,当您从现在起 3 年后回顾该文件夹时,您就会知道它的原因是什么。 (10认同)

Mxx*_*Mxx 19

考虑使用https://ninite.com/ 选择您希望它安装/更新的所有应用程序,只需单击一下,它就会只安装这些应用程序,而没有像 Java 中的 Ask 工具栏这样的额外垃圾。如果系统已经拥有给定应用程序的最新版本,Ninite 将跳过该安装。此外,您不需要每次都重新生成它的包。相同的 .exe 将确保您始终安装最新版本。只需告诉您的朋友/家人每月运行一次,即可确保他们始终保持最新状态。

更新:或者,如果您从http://www.oracle.com/technetwork/java/javase/downloads/index.html安装 JRE,它不会附带 Ask 或 McAfee 工具栏。(不确定之后是否会自动更新)。

  • 我喜欢 Ninite,但它(至少)有两个缺点:a) Ninite 不允许您区分 32 位和 64 位 Java(至少我不知道)-在 64 位机器上,您将同时获得 32和 64 位 Java 安装,虽然大多数只需要 32 位。B) 静默安装/更新是一项高级功能,而 Java 具有内置的自动更新功能(无论它有多丑) (2认同)

小智 12

另一种方法是阻止对 ask.com 域的 DNS 解析。我通过设置我的网络的 DNS 缓存/解析器(未绑定)来拒绝对 ask.com 的查询,然后在选中 ask 工具栏框的情况下更新 java 来测试这一点。结果是没有安装。

这种方法有一个缺点(如果你认为这样),ask.com 域将不可用。但它的好处是可能会发现 ask.com“受感染”的系统(因为用户可能有搜索问题),从而可以进行消毒。

另一个积极因素是不需要对每台计算机进行更改。DNS 解决方案可立即并同时适用于所有系统。请注意,必须阻止其他 DNS 缓存——这在大多数受控环境中是非常典型的——防火墙会阻止除内部 DNS 缓存/解析器之外的所有其他人通过端口 53 访问外部 DNS。

  • “这种方法有一个缺点(如果你认为这样),ask.com 域将不可用” - 我不认为这是一个缺点;-)。对于我通常支持的计算机,我无法在路由器级别进行配置,因此无论如何这都是每台计算机的工作。 (7认同)
  • 按照您的回答,darkphader,127.0.0.1 www.ask.com 的主机文件条目可以用于个人计算机。 (3认同)

thi*_*fun 10

2014 年 11 月:这里的答案基本上已经过时,因为 Oracle 现在已经披露了这一点。或者至少我们可以说现在有一个“官方”解决方案。

首先:Ask 工具栏仅作为 Java 安装程序的消费者版本(您从java.com)中的一个选项包含在内,而 Java 安装程序的企业版(您从 那里获得的java.sun.com)从未包含它。因此,关于 Ask 内容的问题“仅”是私人个人类型用户的问题。我将“仅”放在引号中,因为我也对此感到恼火。它不是企业 IT 部门中存在的讨论,仅仅是因为没有该选项。

好的,让我们关注 Java 安装程序的消费者版本。

现在,Windows 控制面板上的 Java 小部件有一个选项可以永久禁用“提示”,在那里您被问到 Ask 以及您以前必须记住取消选择该选项的地方。

在此处输入图片说明

您只需执行此操作一次,然后再也不要执行此操作。我仍然希望 Oracle 从 Java 的消费者版本中完全删除它,但这个解决方案至少意味着您只需说“不”一次。

还有一个命令行选项。更多信息在这里


小智 6

对于那些感兴趣的人 - 我创建了可用于组策略的管理模板(一个用于 x86,一个用于 x64)。它们已经过测试,可在 XP 和 Windows 7 中运行。

有关此过程的更多信息,请单击此处

在组策略中,您可能需要转到“查看”菜单,单击“过滤”并取消选中“仅显示可以完全管理的策略设置”。

将以下文件另存为templatenamex86 .adm 并在组策略中导入:

CLASS MACHINE

CATEGORY !!cat01

KEYNAME "Software\JavaSoft"
POLICY !!polname

  SUPPORTED !!supOSes
  EXPLAIN !!poldescr

    PART !!msg01 EDITTEXT REQUIRED DEFAULT "DISABLE"
    VALUENAME "SPONSORS"
    END PART 

END POLICY


END CATEGORY

[strings]
cat01="Java Update Sponsor Offers x86 Windows"
polname="Set Value"
supOSes="Windows 2000+"
poldescr="Enabling this policy and leaving this field reading "DISABLE" will remove sponsor offers during Java updates"
msg01="DISABLED = Sponsor Offers Disabled"
Run Code Online (Sandbox Code Playgroud)

将以下文件另存为templatenamex64 .adm 并在组策略中导入:

CLASS MACHINE

CATEGORY !!cat01

KEYNAME "SOFTWARE\Wow6432Node\JavaSoft"
POLICY !!polname

  SUPPORTED !!supOSes
  EXPLAIN !!poldescr

    PART !!msg01 EDITTEXT REQUIRED DEFAULT "DISABLE"
    VALUENAME "SPONSORS"
    END PART 

END POLICY


END CATEGORY

[strings]
cat01="Java Update Sponsor Offers x64 Windows"
polname="Set Value"
supOSes="Windows 2000+"
poldescr="Enabling this policy and leaving this field reading "DISABLE" will remove sponsor offers during Java updates in 64-bit Windows"
msg01="DISABLED = Sponsor Offers Disabled"
Run Code Online (Sandbox Code Playgroud)

您现在应该在组策略中看到它们: 组策略

我希望这些信息也能帮助其他人将这些垃圾远离他们的网络!

-麦克风


dep*_*uid 5

评论中提到了这一点,但在任何答案中都没有明确解释:

适用于 Java 的脱机 Windows 安装程序不会提示安装询问工具栏。Java SE JRE 安装程序的链接(如果您不知道 SE 或 JRE 是什么意思,那么这就是您想要的)当前位于:

http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html

用于 x86(即 32 位软件,包括大多数浏览器)的 Windows 脱机安装程序已明确标记。64 位安装程序似乎只能离线使用。