Disable Developer Mode Extensions is a caution message that Chrome displays when you install an extension from outside of Chrome Web Store. Chrome does not trust the extensions that are not from the Chrome Web Store and regards them as malware. So, as a security measure, it shows up this message on every start of the browser. Read another similar guide on How to Stop Push Notifications on Chrome.
If you have downloaded the extension from a reliable source or if you are a developer of Chrome extensions, you may like to get rid of this warning message. But Google Chrome does not provide any options that can directly stop or hide this alert note from popping up. However, being a Windows user you can use policies and stop the warning message from appearing on each start of the browser. Follow another guide on Chrome – How to Instantly Update Flash in Chrome Browser. Let us head towards the methods and see how to stop this warning note in Chrome.
Table of Contents
Stop Disable Developer Mode Extensions in Chrome
Through Group Policy Editor
Note – This method only works for Professional and Enterprise versions. Users with Home versions will be unable to use this method as Group Policy is not supportable in this specific version.
Step 1 – To begin with, first visit Chrome Policies web page. As we are showing steps for Windows OS, download the latest policy templates zip file for the same.
Step 2 – After extracting the contents, you have to move two files from the extracted items to C Drive.
1. First, go to policy_templates\windows\admx\chrome.admx. Now move the file chrome.admx to C:\Windows\PolicyDefinitions
2. Secondly, browse policy_templates\windows\admx\[yourlanguage]\chrome.adml. Here also, move the file namely chrome.adml to C:\Windows\PolicyDefinitions\[yourlanguage]\chrome.adml
Step 3 – Now, open Chrome, click its menu button (three straight dots) and hover mouse over More tools. This will display few options, click Extensions.
Step 4 – In the next tab, search the third party extension that you have installed on the browser.
Step 5 – You will notice ID of the extension right below the description of the extension. So, use Ctrl+C keys jointly and copy the ID of the extension.
Step 6 – Moving on, open Group Policy Editor. To do so, type gpedit in Cortana. Edit group policy will show up as the Best match on top, select it.
In addition, you can also Open Group Policy Editor in Windows 10 Using 8 Methods.
Step 7 – In the Group Policy Window, go to the below-mentioned path.
User Configuration => Administrative Templates => Google Chrome => Extensions
Step 8 – On the right pane of Extensions, search and double-click a policy namely Configure extension installation whitelist.
Step 9 – Select Enabled option on the window that comes into view. Next, click Show button as shown in the below screenshot.
Step 10 – Paste or add the ID(s) of the non-Chrome web Store extension in the box and click OK.
Step 11 – In the end, save the changes in the Group Policy also. And finally, restart Chrome.
Using Batch File
Note – It is best you take a backup before proceeding because the script below will patch files that the browser requires for running.
Step 1 – Find an empty space on Desktop and conduct a right-click there. Hover mouse over New and click Text Document.
Step 2 – Download the below file, extract, run and once command prompt appears, click any key on your keyboard.
Either manually Create bat File
Step 2 – Copy/paste the below code in the document, name it as DevWarningPatch.bat and save it on Desktop.
<# : @echo off copy/b "%~f0" "%temp%\%~n0.ps1" >nul powershell -v 2 -ep bypass -noprofile "%temp%\%~n0.ps1" "'%cd% '" "'%~1'" del "%temp%\%~n0.ps1" echo: & pause exit /b #> param([string]$cwd='.', [string]$dll) function main { write-host -f white -b black ` "Chrome 'developer mode extensions' warning disabler 20170328" $pathsDone = @{} if ($dll -and (gi -literal $dll)) { doPatch "DRAG'n'DROPPED" ((gi -literal $dll).directoryName + '\') exit } doPatch 'CURRENT DIRECTORY' ((gi -literal $cwd).fullName + '\') ('HKLM', 'HKCU') | %{ $hive = $_ ('', '\Wow6432Node') | %{ $key = "${hive}:\SOFTWARE$_\Google\Update\Clients" gci -ea silentlycontinue $key -r | gp | ?{ $_.CommandLine } | %{ $path = $_.CommandLine -replace '"(.+?\\\d+\.\d+\.\d+\.\d+\\).+', '$1' if (!$pathsDone[$path.toLower()]) { doPatch REGISTRY $path $pathsDone[$path.toLower()] = $true } } } } } function doPatch([string]$pathLabel, [string]$path) { $dll = Join-Path $path chrome.dll if (!(Test-Path -literal $dll)) { return } '' $localAppData = [Environment]::GetFolderPath('LocalApplicationData') "$pathLabel $((split-path $dll).Replace($localAppData, '%LocalAppData%'))" "`tREADING Chrome.dll..." $bin = [IO.BinaryReader][IO.File]::OpenRead($dll) $bytes = $bin.ReadBytes(1MB) # process PE headers $BC = [BitConverter] $coff = $BC::ToUInt32($bytes,0x3C) + 4 $is64 = $BC::ToUInt16($bytes,$coff) -eq 0x8664 $opthdr = $coff+20 $codesize = $BC::ToUInt32($bytes,$opthdr+4) $imagebase32 = $BC::ToUInt32($bytes,$opthdr+28) # patch the flag in data section $bin.BaseStream.Position = $codesize $data = $BC::ToString($bin.ReadBytes($bin.BaseStream.Length - $codesize)) $bin.Close() $flag = 'ExtensionDeveloperModeWarning' $stroffs = $data.IndexOf($BC::ToString($flag[1..99])) if ($stroffs -lt 0) { write-host -f red "`t$flag not found" return } if ($data.substring($stroffs-3, 2) -eq '00') { write-host -f darkgreen "`tALREADY PATCHED" return } $stroffs = $stroffs/3 - 1 + $codesize $centbrowser = $data.indexOf($BC::ToString('CentBrowser'[0..99])) -gt 0 $EA = $ErrorActionPreference $ErrorActionPreference = 'silentlyContinue' $exe = join-path (split-path $path) chrome.exe while ((get-process chrome -module | ?{ $_.FileName -eq $exe })) { forEach ($timeout in 15..0) { write-host -n -b yellow -f black ` "`rChrome is running and will be terminated in $timeout sec. " write-host -n -b yellow -f darkyellow "Press ENTER to do it now. " if ([console]::KeyAvailable) { $key = $Host.UI.RawUI.ReadKey("AllowCtrlC,IncludeKeyDown,NoEcho") if ($key.virtualKeyCode -eq 13) { break } if ($key.virtualKeyCode -eq 27) { write-host; exit } } sleep 1 } write-host get-process chrome | ?{ $_.MainWindowHandle.toInt64() -and ($_ | gps -file).FileName -eq $exe } | %{ "`tTrying to exit gracefully..." if ($_.CloseMainWindow()) { sleep 1 } } $killLabelShown = 0 get-process chrome | ?{ ($_ | gps -file | select -expand FileName) -eq $exe } | %{ if (!$killLabelShown++) { "`tTerminating background chrome processes..." } stop-process $_ -force } sleep -milliseconds 200 } $ErrorActionPreference = $EA $bytes = [IO.File]::ReadAllBytes($dll) $bytes[$stroffs] = 0 "`tPATCHED $flag flag" # patch the channel restriction code for stable/beta $rxChannel = '83-F8-(?:03-7D|02-7F|02-0F-8F)' # old code: cmp eax,3; jge ... # new code: cmp eax,2; jg ... (jg can be 2-byte) function patch64 { $pos = 0 $rx = [regex]"$rxChannel-.{1,100}-48-8D" do { $m = $rx.match($code,$pos) if (!$m.success) { break } $chanpos = $searchBase + $m.index/3 + 2 $pos = $m.index + $m.length + 1 $offs = $BC::ToUInt32($bytes, $searchBase + $pos/3+1) $diff = $searchBase + $pos/3+5+$offs - $stroffs } until ($diff -ge 0 -and $diff -le 4096 -and $diff % 256 -eq 0) if (!$m.success) { $rx = [regex]"84-C0.{18,48}($rxChannel)-.{30,60}84-C0" $m = $rx.matches($code) if ($m.count -ne 1) { return } $chanpos = $searchBase + $m[0].groups[1].index/3 + 2 } $chanpos } function patch86 { $flagOffs = [uint32]$stroffs + [uint32]$imagebase32 $flagOffsStr = $BC::ToString($BC::GetBytes($flagOffs)) $variants = "(?<channel>$rxChannel-.{1,100})-68-(?<flag>`$1-.{6}`$2)", "68-(?<flag>`$1-.{6}`$2).{300,500}E8.{12,32}(?<channel>$rxChannel)", "E8.{12,32}(?<channel>$rxChannel).{300,500}68-(?<flag>`$1-.{6}`$2)" forEach ($variant in $variants) { $pattern = $flagOffsStr -replace '^(..)-.{6}(..)', $variant $patternDisplay = $pattern -replace '^(.{40}).+', '$1' write-host -f darkgray "`tLooking for $patternDisplay..." $minDiff = 65536 foreach ($m in [regex]::matches($code, $pattern)) { $maybeFlagOffs = $BC::toUInt32($bytes, $searchBase + $m.groups['flag'].index/3) $diff = [Math]::abs($maybeFlagOffs - $flagOffs) if ($diff % 256 -eq 0 -and $diff -lt $minDiff) { $minDiff = $diff $chanpos = $searchBase + $m.groups['channel'].index/3 + 2 } } } $chanpos } $searchBase = [int]($codesize/2) foreach ($pass in 1..2) { if ($centbrowser) { break } $code = $BC::ToString($bytes, $searchBase, $codesize - $searchBase) $chanpos = if ($is64) { patch64 } else { patch86 } if ($chanpos) { break } $codesize = $searchBase $searchBase = 0 } if ($chanpos) { $bytes[$chanpos] = 9 "`tPATCHED Chrome release channel restriction" } elseif (!$centbrowser) { write-host -f red "`tUnable to find the channel code, try updating me" write-host -f red "`thttp://stackoverflow.com/a/30361260" return } "`tWriting to a temporary dll..." [IO.File]::WriteAllBytes("$dll.new",$bytes) "`tBacking up the original dll..." move -literal $dll "$dll.bak" -force "`tRenaming the temporary dll as the original dll..." move -literal "$dll.new" $dll -force write-host -f green "`tDONE.`n" [GC]::Collect() } main
Step 3 – Right-click on the batch file and select the option “Run as administrator“. This action will make the script to find and patch all the chrome.dll files by itself. As an alternative, you can also drag and drop a chrome.dll file onto the batch file icon on the desktop.
Note – You will find the chrome.dll file either on C:\Program Files (x86)\Google\Chrome\Application\[ChromeVersion] or C:\Program Files\Google\Chrome\Application\[ChromeVersion].
Conclusion
Hopefully, following either of the procedures and its instructions will make you to Stop Disable Developer Mode Extensions in Chrome. This warning note keeps popping up because Google treats the outside extensions as malware which can infect the browser badly. So, give an attempt to any of the above methods and do write to us if you have more ways for stopping this warning message.