Follow Symbolic Links to a New Windows Install

The other week I got a new hard disk of the spinning kind, to sort through some of my accumulated backups, VSTs, game files, videos, recordings, etc. etc. – no, I’m totally not a data hoarder. To move some old system backup from one disk to an other, I used robocopy, as the file paths were too long and while you can enable long paths support via group policy change, the Windows file copy tool, still can’t handle it. robocopy is supposedly faster anyway, as it doesn’t need to enumerate all the files first and can actually use multiple threads, compare to the Windows file copy which is single threaded.

What I got to learn is, that Windows has symbolic links in the user directory, pointing to the “live” AppData/Local and AppData/Roaming directories and if you don’t specify /sl are parameter, then robocopy will happily follow said sym links and start not just moving your backup, but also your live data.

Screenshot of the robocopy options to not follow sym links

When the first application started crashing, I just brushed it off as some odd behavior, but when more and more things started failing and robocopy kept reporting access denied messages due to another process using those files, I started to dawn on me, but it was already too late at this point.

I copied all the moved files back to their original locations, or at least the files I knew of, and for the most part that fixed the issues. However, there were some things that didn’t work properly anymore. For example Windows Terminal somehow couldn’t find a specific font, even if it’s actually installed. It only accepted it, if you reinstalled the font after a system reboot until the next reboot. Or the wsl command complaint that it couldn’t find something to run. Chrome seems to have recovered okay, even if it briefly lost all its installed extensions.

Instead of spending many hours trying to recover all the bits and pieces, I instead decided to just wipe and reinstall Windows 11. This should hopefully also fix the issue, which for some unknown reason, didn’t allow me to complete a SQL Server installation. For the rest of the post, I thought it might be interesting to some or at least future me, to write about what I usually do, when setting up Windows anew and maybe some of you have additional tips for me.

Windows Install

To start things off, grab the Windows 11 Installation Media and your USB drive. Make sure you know the size and the brand of your USB media, otherwise you may not know, what to select in the BIOS later on. (How would I know?) The install tool should create a correct UEFI boot section thingy, so you shouldn’t have to switch to legacy BIOS mode and don’t even have to disable Secure Boot. Reboot, smash your DEL or F2 or similar key and select a boot override.

In the Windows installer, I went with advanced mode, but then wasn’t sure, if I should manually wipe the whole disk, or if it’s enough to just install Windows on the same system partition again. Doing the latter only lead to a endless BIOS spinner, thus I went back and deleted all partitions on the disk, and let Windows create the ones it deemed necessary. That’s it, with a USB 3 and a M.2 SSDs, it’s unbelievable how fast that installation goes.

Clicking through the Windows 11 “welcome” screens and declining all the privacy invading stuff, we’re finally ready to go…well except that the first thing to do, is to install the latest Windows update, because the installation media tool couldn’t just use the Windows 23H2 to begin with…

Drivers

Gone are the days of endlessly hunting down the drivers. Most of them are automatically installed by Windows already. For example, I didn’t even get to fully finish the setup, when there was already a proper Nvidia GPU driver installed, but I after installing GeForce Experience and logging in, there was a newer version available already.

Don’t be like me and forget to up your display framerates! Open the Display settings, select a display and then “Advanced display”, which should show you the option to go from 60Hz to 144Hz or whatever your monitor supports.

Somehow Windows also directly prompted me to install Armoury Crate, which is ASUS’ software to monitor and control the motherboard, such as fan speeds, RGB lights or overclocking of RAM or CPU, but it also manages driver installations.

Screenshot of Armoury Crate

For the remaining components I’ve started using Intel’s Driver & Support Assistant, which automatically checks for newer driver versions. Without it, I would probably always be quite far behind, but make sure to disable telemetry during installation.

And finally, to ensure that my SSDs are properly monitored and their firmware up-to-date, I installed Samsung Magician, since all my SSDs as Samsung.

Decluttering

To start things off, I grabbed a copy of O&O ShutUp10++ and removed a lot of annoying Microsoft “features”, such as web search or “suggestions” that are just ads in the start menu. It also removes Cortana, and the search bar and other clutter on the taskbar. It’s really simple the use, doesn’t have ads or malware, doesn’t need to be installed and patches some questionable telemetry holes, as such I can highly recommend it. Note, that you’ll have to re-run it after every bigger Windows update…

All the pre-installed spam apps, like TikTok, Instagram are immediately removed from the system. I mean if you have some Android apps, that you want to run on Windows, then go ahead.

I don’t know how people can work with Windows constantly beeping at them, because one of the first things I do on any new Windows install is open the “Change system sounds” setting and disable all sounds, including the Windows startup sound. While you’re here, switch to the Playback and Recording tabs and disable all and any device you’re never going to use anyways, like digital outputs or HDMI outputs.

Screenshot of the Windows Sounds settings

Search in the start menu or settings for “When I snap a window, suggest what I can snap next to it”, which then opens the part of the Windows settings, where you can untick the mentioned option in the drop down, so Windows stops suggesting what other window you may want to snap next to the other one. If you override the Windows snap behavior with FancyZones (see below) anyways, then this might not be as relevant.

When you right-click on the taskbar you should again get access to the Task Manager, after they removed it in Windows 11. In the Processes tab click on the three dots on the top right corner and deselect “Group by type”.

I don’t remember having to turn that off in the past, but I just noticed Windows auto correcting something I typed. Maybe people like this feature, but as someone who switches between English, German and Swiss German a lot and given that Swiss German has no actual grammatical rules, this is a dangerous territory to be in, as it can start “correcting” a lot of already correct words. As such, I suggest to go to the Time & language settings and then disable Autocorrect misspelled words under Typing.

Screenshot of how to disable Autocorrect misspelled words in Windows 11

On Discord disable the notification badge under the Notifications settings. Is anyone really making use of that? Who is just in so few servers, that they can always keep up with all the new messages?

Software

The last few years, I’ve always used Chocolatey to install most of the software on my system, but given that winget is the official package manager and I was starting fresh anyways, I decided to give it a try and can report that it works quite well. By default it supports two sources, winget and msstore, which is the Microsoft Store. If an application exists with both sources, you can specify which one to use with the -s <source> parameter.

With just a few exceptions, I installed everything, from Discord, Chrome, Windows Terminal, to PowerToys through winget without problems. Battle.net couldn’t be found, but also doesn’t have a Chocolatey package, and since Visual Studio comes with its own more complex installer, I decided to install that through normal means, as well as JetBrain’s Rider with ReSharper.

When installing Office 365 apps, make sure you download the x64 versions. You wouldn’t want to artificially constrain your office applications. I think by default Microsoft still installs the 32-bits version, which I really don’t understand.

To have an off-site backup of all my data I use Backblaze. Their client has to be downloaded from your account, once you login to their site, as it is then downloaded “pre-configured”. After the installation, you can select to inherit an old backup state. For me this seems to unfortunately have failed, as I apparently changed too many files, and it looks like, I’ll be forced to start a completely new backup…

Screenshot of the Backblaze client

I use KeePass as my password manager and considered briefly to switch to KeePassXC, but when I tried to start it, the UI never showed, which seems to be some known and potentially already fixed issue. I couldn’t be bothered, so I reverted to my old and trusty setup.

The EA Desktop/App client has some odd issues with download speeds, might depend heavily on your internet provider, but there’s a fix to ensure that the Akamai CDN is used. You essentially open C:\Program Files\Electronic Arts\EA Desktop\EA Desktop\legacyPM\EACore_App.ini and add the following two lines:

EnvironmentName=production
CdnOverride=akamai

And suddenly your download speeds will be normal, instead of crawling slow…

I’m always using a custom location with OneDrive, but by default Windows keeps just selecting the standard path. To fix this, you have to disconnect your account in the OneDrive settings and then, when you reconnect the account, you get to choose the new location. Also works without issues, when you point it to a folder that already has all the data in it, assuming the remote cloud didn’t dramatically change in the meantime.

For Microsoft PowerToys I really like the FancyZones, even if Windows 11 has some layouting thing natively supported now. I don’t find the standard FancyZones layouts useful, so I always add my own layout, that just does a 1/3 + 2/3 split without any margins on all the monitors. It gets a bit tight on smaller (i.e. 1080p) screens.

Screenshot of the PowerToys' FancyZones custom layout

To save some bandwidth, I copied all the Steam games before wiping the PC, but Steam is really lacking a good bulk re-detection functionality. If you want Steam to recognize all your existing Steam games again, you have to go through the library list one by one and install them, only then will Stream realize that files for the game already exist on the disk.

For the Windows Terminal with the latest PowerShell, I use a similar setup as the one from Scott Hanselman and since that could be a blog post on its own, I recommend to just go and read Scott’s post instead.

I have a Stream Deck, but for some reason the Elgato Audio Controller Server keeps using a ton of CPU time, even when there’s nothing really going on, it would sit at a constant 2-4%, which is quite lot for 16 logical cores. You can kill the Elgato Audio Controller Server Watcher then the Controller Server itself and in the startup settings of Task Manager, disable the executable from launching automatically.

Lastly, one of the main reasons why I did the whole reinstallation, getting WSL (Windows Subsystem for Linux) installed, up and running. That can be done with a simple wsl --install command followed by a sudo apt update and sudo apt upgrade to get the latest software updates. Since I use WSL also for some local web development, I additionally installed nginx and php8.1-fpm.

Summary

Always double check your flags when moving some files to prevent such disasters. Then again, I’m actually quite happy to have a fresh Windows install and got to try winget in the process.

Hope you got to learn some new trick or if not, had a good laugh at my expense. 😄

Leave a Comment

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.