<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Local-Account on inetshell</title><link>https://inet.sh/en/tags/local-account/</link><description>Recent content in Local-Account on inetshell</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 05 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://inet.sh/en/tags/local-account/index.xml" rel="self" type="application/rss+xml"/><item><title>Windows 11 without a Microsoft account: oobe\bypassnro and its replacements</title><link>https://inet.sh/en/posts/windows/windows-11-local-account-oobe-bypassnro/</link><pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/en/posts/windows/windows-11-local-account-oobe-bypassnro/</guid><description>Install Windows 11 with a local account, no Microsoft account, using oobe\bypassnro. What to do when the command is gone (24H2+): revive it via registry or use start ms-cxh:localonly.</description><content:encoded><![CDATA[<h2 id="tldr">TL;DR</h2>
<p>On the OOBE &ldquo;Let&rsquo;s connect you to a network&rdquo; screen, open the console with <strong>Shift + F10</strong> and run:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bat" data-lang="bat"><span class="line"><span class="cl">oobe\bypassnro
</span></span></code></pre></td></tr></table>
</div>
</div><p>The PC reboots and the <strong>&ldquo;I don&rsquo;t have internet&rdquo; → &ldquo;Continue with limited setup&rdquo;</strong> path comes back, letting you create a <strong>local account</strong>.</p>
<p>Command gone (Windows 11 24H2 and later)? Bring it back via registry:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bat" data-lang="bat"><span class="line"><span class="cl">reg add <span class="s2">&#34;HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE&#34;</span> /v BypassNRO /t REG_DWORD /d 1 /f
</span></span><span class="line"><span class="cl">shutdown /r /t 0
</span></span></code></pre></td></tr></table>
</div>
</div><p>Or use the direct alternative (no reboot):</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bat" data-lang="bat"><span class="line"><span class="cl"><span class="k">start</span> ms-cxh:localonly
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="why">Why</h2>
<p>Windows 11 pushes OOBE (Out-of-Box Experience) to require <strong>an internet connection + a Microsoft account</strong>. For a lab box, a desktop server, or any machine you want to run on a <strong>local account</strong>, that is friction. <code>oobe\bypassnro</code> was the long-standing shortcut to skip the network requirement — and with it, the MS account.</p>
<h2 id="classic-procedure">Classic procedure</h2>
<ol>
<li>
<p>Advance OOBE to <strong>&ldquo;Let&rsquo;s connect you to a network&rdquo;</strong>.</p>
</li>
<li>
<p><strong>Shift + F10</strong> to open Command Prompt.</p>
</li>
<li>
<p>Type (case-insensitive, use the backslash):</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bat" data-lang="bat"><span class="line"><span class="cl">oobe\bypassnro
</span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p>The PC <strong>reboots</strong> into OOBE again.</p>
</li>
<li>
<p>Now <strong>&ldquo;I don&rsquo;t have internet&rdquo;</strong> → <strong>&ldquo;Continue with limited setup&rdquo;</strong> appears.</p>
</li>
<li>
<p>Create your <strong>local</strong> username and password. Done, no Microsoft account.</p>
</li>
</ol>
<blockquote>
<p>Same-spirit trick: if you simply <strong>disconnect the network</strong> (unplug Ethernet / don&rsquo;t pick Wi-Fi) before this screen, several builds already offer the local-account path with no command.</p></blockquote>
<h2 id="if-the-command-was-removed-24h2">If the command was removed (24H2+)</h2>
<p>In <strong>March 2025</strong> Microsoft <strong>removed the <code>bypassnro.cmd</code> script</strong> from new Windows 11 builds (24H2 and preview builds). If <code>oobe\bypassnro</code> reports &ldquo;not recognized&rdquo;, re-enable it via the registry and restart OOBE:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bat" data-lang="bat"><span class="line"><span class="cl">reg add <span class="s2">&#34;HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE&#34;</span> /v BypassNRO /t REG_DWORD /d 1 /f
</span></span><span class="line"><span class="cl">shutdown /r /t 0
</span></span></code></pre></td></tr></table>
</div>
</div><p>After the reboot, the <strong>&ldquo;I don&rsquo;t have internet&rdquo;</strong> path returns.</p>
<h2 id="modern-alternative-start-ms-cxhlocalonly">Modern alternative: start ms-cxh:localonly</h2>
<p>Instead of rebooting, this hidden OOBE URI opens the local-account creation dialog <strong>directly</strong>:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bat" data-lang="bat"><span class="line"><span class="cl"><span class="k">start</span> ms-cxh:localonly
</span></span></code></pre></td></tr></table>
</div>
</div><p>From <strong>Shift + F10</strong> on the network screen. Fill in a local name and password and OOBE continues without asking for a Microsoft account.</p>
<h2 id="traps">Traps</h2>
<ul>
<li><strong>It&rsquo;s a moving target.</strong> Microsoft keeps closing these paths: it announced removing <code>bypassnro.cmd</code> (March 2025) and later stated it was <strong>blocking</strong> <code>oobe\bypassnro</code>, <code>start ms-cxh:localonly</code>, and other OOBE bypass methods (late 2025). Whether it works <strong>depends on the exact build</strong> of your ISO.</li>
<li><strong>Try the short command first.</strong> If <code>start ms-cxh:localonly</code> does nothing, fall back to the registry method; if the registry fails too, fall back to disconnecting the network.</li>
<li><strong>The ISO matters.</strong> An older ISO (or one built with tools like Rufus, which can pre-answer OOBE and strip the MS-account requirement when it writes the USB) usually saves you this whole fight.</li>
<li><strong>Plan B is always there:</strong> finish OOBE with a throwaway Microsoft account, then <strong>convert to a local account</strong> under <em>Settings → Accounts → Your info → Sign in with a local account instead</em>.</li>
<li>All of this runs on <strong>your own hardware</strong>; it does not bypass activation or licensing, only the online-account requirement.</li>
</ul>
<h2 id="mental-map">Mental map</h2>
<table>
  <thead>
      <tr>
          <th>Scenario</th>
          <th>Method</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Build with the old script</td>
          <td><code>oobe\bypassnro</code></td>
      </tr>
      <tr>
          <td>24H2+ that removed it</td>
          <td><code>reg add … BypassNRO</code> + reboot</td>
      </tr>
      <tr>
          <td>Direct, no reboot</td>
          <td><code>start ms-cxh:localonly</code></td>
      </tr>
      <tr>
          <td>Nothing works</td>
          <td>Disconnect network / Rufus / convert to local later</td>
      </tr>
  </tbody>
</table>
]]></content:encoded></item></channel></rss>