如何禁用 Chrome 扩展程序而不在多个同步设备上禁用它们

gro*_*wse 153 google-chrome-extensions

我在 4 个不同的工作站上使用 Chrome,并且我的扩展程序在所有工作站上同步。

我遇到的问题是,如果你有一个真正的鼠标,其中一个扩展(Gestures for Chrome)效果很好,但在 Ubuntu 上的触控板上,它只是妨碍了。

如果我在 Ubuntu 机器上禁用它,由于其内部同步机制,它会在所有 Chrome 安装上被禁用。

问:我可以在一台机器上有选择地禁用扩展吗?

avi*_*irk 89

可能这不是你要找的,但你可以试试这个。单击右上角的三线/扳手图标,打开Chrome 中的设置菜单。现在打开高级同步设置..

在此处输入图片说明

在此处输入图片说明

现在选择选项选择要同步的内容,然后取消标记扩展选项。现在您的扩展程序将不会与其他 PC 同步。

  • 不得不在多个实例之间手动保持 19 个扩展同步,仅仅因为我不想跨多个实例同步单个扩展似乎有点不好交易。 (70认同)
  • 正如我告诉你的 * 这不是你要找的 *,而且 AFAIK 还没有单一扩展的解决方案。如果有人会知道会来帮助你。如果可能的话,我也很想看看它。手动同步扩展的最佳方法是制作一个书签文件夹,然后将您最喜欢的扩展的书签放在他们的书签中。 (6认同)
  • 当您只安装了几个扩展时,这绝对是比所有其他建议的 hack 更用户友好的解决方案。 (6认同)
  • 好主意,如果您需要同步扩展,您可以暂时启用它,然后重新禁用扩展一次,而不是_every_ _single_ _time_。 (5认同)
  • 从我的角度来看,这并不理想,但比将 dll 复制到新文件夹中的闲逛要好。+1 (4认同)

WOR*_*MSS 60

您可以将想要的扩展安装为本地扩展。

  1. 查找你想要的扩展的IDchrome://extensions使开发者模式

  2. 导航到您的 Google 安装目录。Windows: %localappdata%\Google\Chrome\User Data\Default\Extensions\{Extension_ID} \{Version_Number}

  3. 将它保存在某个地方.. 用户目录可能吗?

  4. 返回chrome://extensions开发模式下启用,然后按Load unpacked extension。并导航到扩展的新副本。

  5. 您现在应该看到您有两次扩展名。禁用真正的扩展名。

我说禁用是因为这种方法有一个不好的一面,那就是你会丢失自动更新,每次更新时你都需要一遍又一遍地重复上述步骤。

如果您不确定哪个是真实副本和新副本,请查看 ID 标签下的Loaded from: {Path_To_Your_Copy}

  • 到目前为止最好的答案。 (2认同)
  • 比最佳答案简单得多......这显然非常有用 (2认同)

nix*_*xda 28

基于安全问题,Chrome 不会同步任何包含 NPAPI 插件的扩展程序。

来源

什么是 NPAPI 插件?

在 NPAPI 插件中运行的代码具有当前用户的完全权限,并且不会以任何方式被谷歌浏览器沙盒化或屏蔽恶意输入。在处理来自不受信任来源的输入时,您应该特别小心,例如在处理内容脚本或 XMLHttpRequest 时。

来源

理论

如果我们以 Chrome 使用 NPAPI 识别扩展程序的方式修改您的扩展程序,您应该没问题。

如何

  1. 首先,您需要来自任何 NPAPI 扩展(Screen Capture (by Google))的虚拟 .dll 。该扩展程序同时从 Google Play 商店中删除,因为Google 决定放弃 NPAPI 支持。但这对我们的场景来说并不重要。幸运的是,官方 Screen Capture wiki仍然包含源代码。我们不需要完整的扩展名,只需要 NPAPI .dll screen_capture.dll直接下载

  2. 其次,转到不应同步的扩展文件夹。在你的情况下,Chrome 的手势
    ..\profile\Default\Extensions\jpkfjicglakibpenojifdiepckckakgk\1.12.1_0

  3. 修改manifest.json文件并添加 NPAPI 插件,如 Stackoverflow所述,甚至在developer.chrome.com 上更好

    {
      "name": "My extension",
      ...
      "plugins": [
        { "path": "screen_capture.dll" }
      ],
      ...
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 修改您不想同步的扩展的background.html文件,也在上面的 Stackoverflow 答案中进行了描述。

    <embed type="application/x-my-extension" id="pluginId">
    <script>
      var plugin = document.getElementById("pluginId");
      var result = plugin.myPluginMethod();  // call a method in your plugin
      console.log("my plugin returned: " + result);
    </script>
    
    Run Code Online (Sandbox Code Playgroud)
  5. 可能需要重新启用NPAPI支持,通过在未来chrome://flags/#enable-npapi

从这里你就靠自己了。我对扩展编码了解不够。
这就是为什么它是一个理论:)

  • 好吧,Google 已决定 [放弃 NPAPI 支持](http://blog.chromium.org/2013/09/saying-goodbye-to-our-old-friend-npapi.html) 以用于未来版本。 (4认同)
  • 这不是一个好方法 - 它要么阻止更新,要么在扩展获得更新时删除 DLL。 (4认同)

Har*_*tha 13

我发现的另一个解决方案是使用 Chrome 中包含的策略机制。Google 提供了通过组策略管理扩展程序的可能性。通过将不需要的扩展名列入黑名单,我们有效地删除了这台 PC 的同步。我们可以通过手动设置这些选项来利用这些知识。

以下是 Windows PC 的简短说明:

  1. 打开您的注册表编辑器 (regedit)
  2. 导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome - 如果它不存在则创建它
  3. 创建一个名为“ExtensionInstallBlacklist”的新密钥
  4. 添加一个新值 (REG_SZ) 并将其命名为“1” - 如果它已经存在,则将其命名为“2”,依此类推
  5. 将此值的数据设置为要删除的扩展程序的 ID

对于 Linux 操作系统:

  1. /etc/opt/chrome/policies/managed/policies.json如果文件不存在,则创建该文件
  2. /etc/opt/chrome/policies/managed/policies.json使用您喜欢的文本编辑器打开文件
  3. 添加以下内容:
    {"ExtensionSettings": { "PUT EXTENSION ID HERE": { "installation_mode": "blocked" } }
  4. 保存并关闭文件

通过这样做,扩展程序将在您下次启动 Chrome 时被删除。这只会影响您所在的 PC。我通过全新安装 Chrome 来检查这一点。登录后,所有扩展程序都已加载 - 特别是我们在另一台 PC 上列入黑名单的扩展程序。

可以在此处找到此策略设置的文档,其中还显示了不同操作系统的设置:

https://dev.chromium.org/administrators/policy-list-3#ExtensionInstallBlacklist

编辑 1: 添加了对 Linux 的描述(感谢评论中的 sherbang)

编辑 2: 如 Matt Scully 所示,文档的更新 URL:https : //cloud.google.com/docs/chrome-enterprise/policies/?policy=ExtensionInstallBlacklist

  • 这个答案为我指明了正确的方向。在linux上,创建文件`/etc/opt/chrome/policies/managed/policies.json`,并添加以下内容:`{ "ExtensionSettings": { "PUT EXTENSION ID HERE": { "installation_mode": "blocked " } }` (2认同)

小智 7

对我有用的一件事是每次 Chrome 开始使用 Chrome 任务管理器时手动终止插件的进程。这可以通过以下方式实现:

  • (在 Mac 上)菜单 > 更多工具 > 任务管理器
  • (在 PC 上)右键单击菜单栏> 任务管理器或Shift+Esc

然后只需单击您不想运行的扩展程序,然后单击“结束进程”。

在工作时,我有两台电脑,我不希望两台电脑上都出现谷歌视频群聊。唯一不好的是每次启动chrome时都必须这样做。

  • 我发现这个解决方案比其他解决方案更痛苦......但它仍然是一个解决方案 (2认同)

RTO*_*kit 5

这不是一个坚决的答案,而是另一个审视问题的前景。

Chrome同步系统不允许以任何方式,单机自定义评分;任何带有额外扩展的解决方案,disable/enable在您的扩展中使用标志运行,都将失败!

因为同时使用相同用户帐户的另一台机器会反映更改。

避免这种信息交换的一种方法是他建议@avirk禁用扩展同步,但该解决方案似乎不适合您的环境。

然后我再提出两个想法,可以采用这些想法来获得所需的结果:

  • 创建第二个帐户将允许您自定义自己的一组扩展(我个人使用此解决方案在不同机器上拥有不同的 ScriptSafe 配置文件)

另一个建议不太传统,可能被认为是一个糟糕的黑客,但我会以各种方式描述它,以便您有更广泛的选择。

  • 导航到相关插件的文件夹: .config/google-chrome/Default/Extensions/jpkfjicglakibpenojifdiepckckakgk/versionfolder 并将内容清除到文件“background_page.html”中
    “此示例仅适用于插件:Gestures for Chrome (TM)”

这会在加载页面时生成异常,这将不允许扩展中的事件代码正确运行。 因此,我们将对此扩展进行本地禁用。

请记住,每次收到扩展的新更新时,都必须在新版本文件夹中重新执行此操作。


小智 5

这是一个简单的解决方案(考虑到您有 19 个扩展并且只有一个或两个有问题):在每台计算机上首次安装后:

  1. 允许 Google Chrome 执行初始同步。
  2. 安装后,转到设置并禁用扩展同步。
  3. 删除您想要的扩展。

这基本上保留了用户中的所有扩展名,您可以为每台计算机手动编辑它们。

虽然我不得不承认以前的答案更有趣,但这解决了您的问题,而无需精通技术。

干杯!