Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Enable Windows 10 Developer Mode programmatically

Tags:

I know you can enable Windows 10 Developer mode interactively by going to Settings | For developers, selecting 'Developer mode' and then rebooting.

Is there a way to enable this programmatically? (eg. via PowerShell or similar so that I can include it as a step in a Boxstarter script when refreshing my developer workstation)

like image 575
David Gardiner Avatar asked Oct 14 '16 01:10

David Gardiner


People also ask

How do I turn on developer mode manually?

1 Go to "Settings", then tap "About device" or "About phone". 2 Scroll down, then tap "Build number" seven times. Depending on your device and operating system, you may need to tap "Software information", then tap "Build number" seven times. 3 Enter your pattern, PIN or password to enable the Developer options menu.

What happens when you enable developer options?

Android Developer Options allow you to enable debugging over USB, capture bug reports on to your Android device, and show CPU usage on screen to measure the impact of your software.


2 Answers

Turns out Nickolaj Andersen has written an article which includes just such a PowerShell script..

http://www.scconfigmgr.com/2016/09/11/enable-ubuntu-in-windows-10-during-osd-with-configmgr/

Here are the relevant lines extracted from his post:

# Create AppModelUnlock if it doesn't exist, required for enabling Developer Mode $RegistryKeyPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" if (-not(Test-Path -Path $RegistryKeyPath)) {     New-Item -Path $RegistryKeyPath -ItemType Directory -Force }  # Add registry value to enable Developer Mode New-ItemProperty -Path $RegistryKeyPath -Name AllowDevelopmentWithoutDevLicense -PropertyType DWORD -Value 1 
like image 80
David Gardiner Avatar answered Sep 20 '22 15:09

David Gardiner


I modified the accepted answer and ended up with the following script:

param([Switch]$WaitForKey)  if (([Version](Get-CimInstance Win32_OperatingSystem).version).Major -lt 10) {     Write-Host -ForegroundColor Red "The DeveloperMode is only supported on Windows 10"     exit 1 }  # Get the ID and security principal of the current user account $myWindowsID=[System.Security.Principal.WindowsIdentity]::GetCurrent() $myWindowsPrincipal=new-object System.Security.Principal.WindowsPrincipal($myWindowsID)  # Get the security principal for the Administrator role $adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator  if ($myWindowsPrincipal.IsInRole($adminRole)) {     $RegistryKeyPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock"     if (! (Test-Path -Path $RegistryKeyPath))      {         New-Item -Path $RegistryKeyPath -ItemType Directory -Force     }      if (! (Get-ItemProperty -Path $RegistryKeyPath -Name AllowDevelopmentWithoutDevLicense))     {         # Add registry value to enable Developer Mode         New-ItemProperty -Path $RegistryKeyPath -Name AllowDevelopmentWithoutDevLicense -PropertyType DWORD -Value 1     }     $feature = Get-WindowsOptionalFeature -FeatureName Microsoft-Windows-Subsystem-Linux -Online     if ($feature -and ($feature.State -eq "Disabled"))     {         Enable-WindowsOptionalFeature -FeatureName Microsoft-Windows-Subsystem-Linux -Online -All -LimitAccess -NoRestart     }      if ($WaitForKey)     {         Write-Host -NoNewLine "Press any key to continue..."         $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")     } } else {    # We are not running "as Administrator" - so relaunch as administrator    # Create a new process object that starts PowerShell    $newProcess = new-object System.Diagnostics.ProcessStartInfo "PowerShell";     # Specify the current script path and name as a parameter    $newProcess.Arguments = "-NoProfile",$myInvocation.MyCommand.Definition,"-WaitForKey";     # Indicate that the process should be elevated    $newProcess.Verb = "runas";     # Start the new process    [System.Diagnostics.Process]::Start($newProcess);     # Exit from the current, unelevated, process    exit } 

It automatically elevates itself, if not already running elevated and enables the optional feature mentioned by Julian Knight.

like image 43
mark Avatar answered Sep 19 '22 15:09

mark