每次更新Java时,如何防止安装Ask.com工具栏?


230

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

此外,Java安装实际上建议安装这个无用的垃圾,这意味着任何非IT人员都很可能会检查并安装它(毕竟,它默认启用并且友好的Java安装程序确实推荐了,对吗?)。

为了增加侮辱伤害,即使您删除了Ask Toolbar,当下一次Java更新到达您时,您可以确保很快再次看到它(由于Java的大量安全修复,这似乎经常发生,但是那是另一个故事)。

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

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


8
我总是下载java的离线版本,似乎没有“广告”。
kobaltz 2013年

2
@kobaltz:当你更新它时,该版本的行为如何(如果你只按下一个,下一个,下一个)?你有Ask工具栏吗?我对这个解决方案的想法,特别是在计算机上实现,其用户并不是最精通IT的人。用户可能会忘记取消选中Ask Toolbar,绝对不会乱搞离线安装程序;-)
abstrask 2013年

23
考虑签署此请愿书change.org/petitions/... :)
Mxx 2013年

3
@RasmusRask - Ask.com不包含在离线安装程序中。
Ramhound 2013年

5
强制性阅读:密切关注Oracle如何使用Java更新安装欺骗性软件 - zdnet.com/...
Walt Stoneburner 2013年

Answers:


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

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


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

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

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

并在它们两者中创建一个新的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"

请注意,此开关不仅会禁用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

13
这是一个非常优雅和优雅的解决方案。很好找!让我们希望Java继续遵守该注册表设置,并且不要突然决定使用其他价值 - 你知道,只是为了推动赞助商软件无论如何;-)
abstrask 2013年

3
我刚刚使用Java RE 7更新17在虚拟机中测试了注册表设置.Ask工具栏确实没有安装。甜!我喜欢这个比我自己更多的修复,所以我会改变接受的答案。谢谢!:-)
abstrask 2013年

7
我只想确认SPONSORS = DISABLE选项对我有用。它现在是我们工作站GPO的一部分。
myron-semack 2013年

2
可下载的文件为您提供方便:pastebin.com/download.php?
i=iTkxyPum

2
年度答案!!!!
Matias Nino 2013年

46

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

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


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

首先,确保已删除Ask工具栏。然后将以下代码复制到记事本,将其另存为.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

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

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

类似的方法最有可能用于阻止大多数其他类型的背驮式软件。

编辑#1

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

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

如果您只是首先被分配了读访问权限,则不会发生这种情况,但是当您为该文件夹分配了读/写权限然后被拒绝写访问权时,似乎就会发生这种情况。

恢复权限

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


10
我建议在文件夹中留下一个文本文件,解释为什么“ask.com”文件夹在那里以及它的设计目的。这样,当你回顾3年后的文件夹时,你会知道它的原因是什么。
理查德

@Richard:可能是个好主意;-)
abstrask 2013年

@Richard:Aagain,非常好主意。我已经更新了脚本以添加解释性的自述文件。但是,由于Windows资源管理器的怪癖,它直接存储在Program Files中,而不是存储在Ask.com文件夹中。该脚本现在还保存了一个小脚本以恢复更改,因此您无需记住所执行的操作或ICACLS的语法。
abstrask 2013年

对脚本的小更新:ProgramFiles路径现在与语言环境无关。
abstrask 2013年

1
@Pacerier:没有理由不这样做。阅读我的答案的顶部。我在简单明了的注册表mod之前提出了解决方案。如果甲骨文停止尊重注册表设置,或者作为阻止其他软件的一个想法,捎带其他软件而不是Java,我将我的答案作为后备保留
2014年

19

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

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


2
我喜欢Ninite,但它有(至少)两个缺点:a)Ninite不允许你区分32位和64位Java(至少不是我所知道的) - 在64位机器上,你将得到32和64位Java安装,但大多数只需要32位。B)无提示安装/更新是一项高级功能,而Java内置自动更新(无论多么丑陋)
abstrask 2013年

是否还安装了64位jre真的很重要吗?它不会减慢系统速度,一旦浏览器升级到64位,它们就会有适当的插件准备就绪。只要他们看到Java更新弹出窗口运行Ninite安装程序,就告诉您的朋友/家人。您不需要付费的Ninite更新程序应用程序。或者甚至将Ninite放入Windows调度程序中以自动运行,但是经常需要并保持这些系统是最新的。
Mxx 2013年

1
“如果还安装了64位jre,真的很重要吗?” - 是的,当它根本不需要时,我认为这很重要。但话说回来,当涉及到不必要的软件时,我有点迂腐;-)。此外,我以前经历过Ninite安装的Java,64位版本从未更新过。当然这可以解决我只是指示我的“用户”定期运行Ninite包。但话又说回来,范围只是为了防止通过Java或其他方式安装Ask.com工具栏。像Secunia PSI和CSIS Heimdal这样的工具可以使大多数第三方应用程序保持最新状态。
abstrask 2013年

Java自动更新程序似乎只更新32位版本。如果您还安装了64位,它将被遗忘。
Martijn Heemels 2014年

12

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

这种方法有缺点(如果你认为这样),ask.com域将不可用。但它有一个奖励,即ask.com“感染”系统可能被发现(因为用户可能有搜索问题)允许进行消毒。

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


7
“这种方法有缺点(如果你认为这样),ask.com域将不可用” - 我不认为这是一个缺点;-)。对于我通常支持的计算机,我无法在路由器级别配置它,因此无论如何都是每台计算机的工作。
abstrask 2013年

3
根据您的回答,darkphader,127.0.0.1 www.ask.com的主机文件条目可以适用于个人计算机。
布莱恩

10

2014年11月:由于甲骨文现已披露此问题,因此这里的答案基本上已经过时。或者至少我们可以说现在有一个“官方”解决方案。

首先:Ask工具栏只作为选项包含在Java安装程序的Consumer版本中(您获得的java.com那个),而Java安装程序的Corporate版本(您获得的版本java.sun.com)从未拥有它。所以关于Ask东西的问题“仅”对于私人个人类型用户来说是“问题”。我把“仅”放在引号中,因为我也对它感到恼火。它不是企业IT部门存在的讨论,仅仅因为选项不存在。

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

现在,Windows控制面板上的Java小部件有一个选项可以永久禁用“提示”,询问您询问的位置以及您之前必须记住取消选择该选项的位置。

在此输入图像描述

你只需要做一次然后再做一次。我仍然希望Oracle从Java的Consumer版本中完全删除它,但这个解决方案至少意味着你只需要说“不”一次。

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


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"

将以下文件另存为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"

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

我希望这些信息可以帮助其他人将垃圾从他们的网络中删除!

-麦克风


很好的企业部署,虽然我个人更喜欢使用组策略首选项部署注册表设置,而不是摆弄定制ADM模板中的语法正确;-)
abstrask 2013年

5

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

Java的脱机Windows安装程序不会提示安装Ask Toolbar。Java SE JRE安装程序的链接(如果您不知道SE或JRE的含义,那么这就是您想要的)目前位于:

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

x86的Windows脱机安装程序(即32位软件,包括大多数浏览器)已清楚标记。64位安装程序似乎只是脱机。


这很棒,但您仍需要在每次更新时取消选中它。
Jirka-x1 2013年

3

Chocolatey上的javaruntime软件包似乎避免安装Ask工具栏。我一直在运行该软件包,不幸的是,它是自动更新程序,并且在从这个初始源更新后没有看到安装了Ask工具栏。我怀疑java updater遵守原始安装参数。

仅供参考,Chocolatey是一个命令行Windows应用程序/包管理器,就像apt-get for Linux一样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.