Aidin’ Aiden – CompatTelRunner Killer

Today I heard my machine’s fans spin up although it was supposed to do nothing and I knew it was time to kill the CompatTelRunner again.

Disabling all spy options in Windows 11 does not really help, so the only thing that works is to kill the executable with fire until it rises again after the next update like an evil Phoenix from hell.

It’s the same dumb task each time:
– change ownership of file
– get write access
– delete
– create a dummy replacement
– make it inaccessible by everyone

Today I thought “Let’s Aiden create a script that I can run each time, maybe even in autostart if necessary.”

The plan

The client I used was Cline this time and the prompt was:

please implement a windows 11 batch script that disables the "C:\Windows\System32\CompatTelRunner.exe" process by following these steps: change the owner of that file to Scanix (QUBE\Scanix), change permissions to get write access, then delete it. Afterwards create a new empty text file (with the name "CompatTelRunner.exe") in its place and change the permissions, so that noone has write access to it and cannot delete it.

I have used the /deep-thinking action in plan mode. The plan looked like this:
(I don’t think my username or the computer name is a secret worth anonymizing ^^)

Implementation Plan for CompatTelRunner.exe Disabler

   Overview
   This script will disable the Windows Compatibility Telemetry Runner (CompatTelRunner.exe) by replacing it with an empty file that has restrictive permissions, preventing Windows from re-creating or executing it.

   Technical Approach
   The batch script will use these Windows commands:
   1. takeown - Takes ownership of the target file
   2. icacls - Modifies Access Control Lists (permissions)
   3. del /f - Force deletes the original executable
   4. type nul > filename - Creates an empty file
   5. icacls with deny rules - Sets restrictive permissions

   Key Considerations
   • The script must be run as Administrator to modify System32 files
   • The user "Scanix" from domain "QUBE" will become the owner
   • The replacement file will have .exe extension but contain no executable code
   • Permissions will deny write/delete access to all users including Administrators

   Questions Before Implementation
   1. Should the script include a confirmation prompt before making changes, or should it run silently?
   2. For the final permissions, you mentioned "noone has write access and cannot delete it" - should this also apply to the owner (Scanix), or should Scanix retain full control for potential future restoration?
   3. Should I include error handling that checks if each command succeeds before proceeding to the next step?

Aaaand… I just realized that I completely ignored his questions and simply switched to act mode. ^-^

The script

The first model I tried with this was “zai-org/glm-4.7-flash” which does not seem to work very well in this case and produced a non-working script, ending up in an endless loop adding pause calls to it.

The second model was “qwen3.5-27b” and it instantly nailed it (after adding some korean characters to the name of the batch file, which it fixed by itself).

At first it used the “continue anyway” approach when the switch of the ownership or one of the other tasks failed, but a short message from me made him change it.

The resulting batch works fine and will be used by me from now on.

========================================
CompatTelRunner.exe Disabler
========================================

Target: C:\Windows\System32\CompatTelRunner.exe
New Owner: QUBE\Scanix

[Step 1/5] Taking ownership of CompatTelRunner.exe...
[Step 2/5] Changing owner to QUBE\Scanix...
[Step 3/5] Granting full permissions...
[Step 4/5] Deleting CompatTelRunner.exe...
[Step 5/5] Creating empty replacement file...
Setting restrictive permissions on replacement file...

========================================
Operation Complete
========================================

CompatTelRunner.exe has been replaced with an empty file.
The replacement file is owned by QUBE\Scanix and has restrictive permissions.

Note: Windows may attempt to restore this file during updates.
You may need to re-run this script after major Windows updates.

Drücken Sie eine beliebige Taste . . .

I will attach it here to save it for the future (make sure to change the OWNER name to yours if you want to try it).

Aiden’s Journey – Part 2

Operating System

At first, I was going to install Windows 11, because that is what I am most comfortable in.

But then I’ve read about better performance in Linux and as a software architect, I thought it would be good to refresh my Linux knowledge and so I decided to make it a dual boot system with Win 11 and Linux.

So, … what Linux to use? First everything pointed to an Ubuntu LTS distribution. I downloaded it, prepared a bootable USB stick and the journey could begin.
Or so I thought…

BIOS where art thou?

When booting the new machine connected to my new LG monitor, I realized that the first thing I saw was the Windows login screen, nothing before that.

I tried different ports, the onboard graphics card vs. the NVidia one. I tried updating the firmware of the NVidia card and connecting it via different cables.

But the BIOS or anything else never showed up on screen. My other gaming PC with an NVidia RTX 4090 had no problems at all.

So… I ended up connecting it to my TV in the kitchen, which made working on it a pain. The misbehaving wireless mouse was also adding to the experience.

Ubuntu

But at least I could start installing the system now. At first, everything looked fine and it installed alright. After doing some stuff in the – in my opinion – not so great Gnome desktop manager, I needed a reboot.

That’s where things went downhill.

The system stopped booting because of trouble with the NVidia drivers.

As Linux was unknown ground for me, I followed lots of tutorials from the internet and killed the old drivers, blacklisted Nouveau drivers and did lots of stoneage stuff (typing in a shell).

After an hour or so, the system started with lots of graphical artifacts and a wrong aspect ratio. But at least I had a desktop again and could try to install a better driver. Unfortunately, I still had to do lots of stuff in the shell.

After a lot of steps (that I would never be able to reproduce), the machine started with a working display again and I was back on the desktop to do stuff. Another small change later, a reboot was necessary and I was back at the broken state.

Goodbye Ubuntu!

Garuda Linux

After a websearch for the best distributions with NVidia support, this one popped up with some others. I chose Garuda in the end and installed it from a fresh USB stick.

I finished the installation and rebootet from SSD. I tried logging in with the password that I had chosen, but… computer said no.

It seemed that I had somehow managed to mistype my passwort two times during setup and so I just restarted from step 1. XD

But after this hiccup, the installation was fine and the desktop experience was so much better. It took some time to get it to look nice (e.g. to get rid of those weird rounded windows), but then I almost felt like home.
Most of the windows key shortcuts work the same, which speeds up my work a lot.

Now, the real fun could begin.

Aiden’s Journey – Part 1

Prologue: The Hardware

It all began with a friend sending me a link to a cheap AI NVidia card, the RTX 2000 Pro Blackwell. For “just” 800 bucks you could have 16 Gb of VRAM for a little AI machine.

The idea intrigued me, as I’ve always dreamt about a separate machine to provide the power for a coding assistent or image generation while I still had the GPU and VRam on my gaming pc free for other stuff.

I looked at it for a while and realized: This would be a downgrade!

My current gaming pc has a NVidia RTX 4090 with 24 Gb VRAM. It allowed me to load quite a selection of models and use them for generative AIs. The new card only had 16, so I would not be able to load as much.

I tried to build a PC and put two of those in, but the sites I visited only offered PCs capable of containing one of those beasts. So…

I thought: “You just had your [censored] birthday, gift yourself a cool machine!”

And that’s what I did. 🙂

At first I ended up on a site only selling to companies, then I found out that – for some weird reasons – the prices on some of them excluded taxes. That meant that they were almost 20% more expensive at the checkout than they were in the shelf. T_T

I thought about it some more and ended up with a YOLO feeling and… just bought it.

The configuration I ended up with:

CPUIntel® Core™ Ultra 7 20-Core-CPU265K (up to 5,5GHz) 30 MB Cache
MainboardASUS® PRIME Z890-P WIFI (LGA1851, DDR5, M.2 PCIe 5.0, Wi-Fi 7)
RAM32 GB PCS PRO DDR5 5600 MHz CL46 (1 x 32GB)
GPU48 GB PNY NVIDIA RTX Pro 5000 Blackwell, 14080 CUDA-CORES, 4x DP
1. M.2 SSD1 TB CRUCIAL T710 GEN 5 M.2 NVMe PCIe SSD (bis zu 14,900 MB/sR, 13,700 MB/sW)
2. M.2 SSD2 TB SAMSUNG 990 PRO M.2, PCIe 4.0 NVMe (bis zu 7450 MB/R, 6900 MB/W)
3. M.2 SSD2 TB CRUCIAL E100 GEN 4 M.2 NVMe PCIe SSD (bis zu 5000 MB/sR, 4500 MB/sW)

48 Gb of VRAM! That was double the amount I had before. That should mean something, right? Well, I guess we have to wait and see.

At first I thought that I won’t need much RAM as most of the stuff is happening in the VRAM, but right after I ordered it and they started assembling it, I looked at some posts and decided to get more…

The Memory Switcheroo

Memory does not seem to be easy to get a hold of nowadays. I started on Amazon as I usually do, but I specifically wanted to get the same RAM that was already in there, so I had two identical 32 Gb memory modules.

In the end I returned to eBay where I got most of my collection of over 1,000 DVDs and Blu-rays in the good old days.

I found an okay offer for 340€ and grabbed it. The seller seemed trustworthy and quickly sent the package out and even showed a photo of the item with the invoice.

In the meantime, I installed Win 11 and found out that (using the vanilla setup) you could not skip using an online MS account anymore. I don’t know what they need all those fake temp accounts for…
Of course, I switched back to a local account right after installation.

A few days later, I received it and opened it to find… a 16 Gb module.

First thought: Fraud

Second thought: Did I misread it?

I checked the original eBay offer and it said 32 Gb. The invoice said 32 Gb (the one in my hand and the one on the photo). Then I zoomed in and saw that you could see the 16 Gb module on the photo with the 32 Gb invoice.

That helped me calm down a bit as I had proof now and it was unlikely that a fraudulent dealer would provide something like this.

So, after contacting him, the issue was resolved and a week later I got the correct 32 Gb memory module and the next phase started.

Unesroga – The not so final version

After I completed all puzzles and did two playthroughs, I started doing the soundtrack. I looked for a few music tracks from the same artist and recorded my own sounds, which was tricky but fun.

Then I thought that the game was finished. I sent the link to someone who started testing it and instantly – accidentally – bruteforced it and thus circumvented a large portion of the game. 🙁

As usual, the following part contains spoilers of the game, so don’t read on if you want to play it yourself.

Continue reading Unesroga – The not so final version

Unesroga – Puzzle-complete

Yeah, I’m bad at writing dev logs…

I wanted to do more blog posts, but now the game is finished gameplay wise and I am doing the ending now. XD

After you open the exit, there will be a corridor with fun facts about your playthrough.

I am using an effect to make the text appear, similar to the effects for the “ultragreen” paint that you can only see with the green lamp.

Therefore a texture is generated consisting of images (TBD) and text including your statistics.

The “Magic Displays” with some live generated textures

To add some perspective to it, the texture has been postprocessed to make the lines and text “go along the wall”.

As you can see, the text suffers from this. I have tested several fonts, but there was no way around it: The letters would break when stretched or shrunk along with the height of the wall.

So I reworked my text rendering code that I used to draw wrapped text and added a callback for manual letter rendering. The idea was to not actually shrink the text, but only make it go along the lines parallel to the wall.

The result was a lot more readable:

Letter placement instead of texture manipulation

Images that might be part of an info panel would still be postprocessed the old way.

I think in a pixel based game with the low resolution 480×270, this is the way to go.

Here is an example of how the panel is animated when clicking on it to reveal the text:

Quite a few panels are still missing, but then the next task is to add sounds.

I am really looking forward to that part. 😀

Unesroga – The next room (Spoiler alert)

After finishing the demo, I can now work on the next room. At the end of the demo, the player just opened the door to it. When clicking on it, there’s just a “To be continued…”

And that is done at the moment. I’m trying to keep this as much spoiler free as possible, but if you want to discover everything on your own, then:
Do not read any further!

Continue reading Unesroga – The next room (Spoiler alert)