Modding Windows 11 without low level expertise
Published Aug 21, 2026
I keep OBS running in the background pretty much 24/7 to clip gameplay moments. The problem is that because OBS holds an audio session open, Windows 11 permanently displays the microphone icon in the system tray.
Which completely defeats the point of the indicator, I could never tell if an unexpected app was actually using my mic.
I wanted a simple rule: hide the icon if only OBS is using the mic, but show it right back up the second any other app starts listening.
Building something like that means writing C++, hooking into explorer.exe, and digging through Windows registry keys. I mostly build for the web, so my background was pretty much limited to some university C++ classes and C# from a professor who pushed us back in the day.
Here's how I built and published Adaptive Microphone Icon anyway using Windhawk, existing open-source mods, and an LLM.
1. Breaking the Problem into Isolated Scripts
A solid, working community script is the best foundation to build on. If you ask an AI to write a full Windows hook from scratch, it will happily invent Win32 functions or stuff that doesn't have any right to work and crash your desktop.
So instead of trying to build the entire mod in one go, I split it into two isolated scripts:
-
Hiding the microphone tray icon: I took a larger existing community mod, Taskbar Tray System Icon Tweaks, bisected it down to just the tray-hiding hook logic (making sure to credit the author), and confirmed I could reliably toggle the icon.
-
Monitoring microphone usage: Threads on Stack Overflow and Reddit pointed me to
HKCU\...\CapabilityAccessManager\ConsentStore\microphone(and its\NonPackagedsubkey for desktop apps).Windows writes 64-bit timestamps instead of a boolean flag: if
LastUsedTimeStop == 0, the stream is active. RunningRegNotifyChangeKeyValuein a background thread catches those changes in real time. (Of course, this only tracks apps going through standard Windows audio APIs. Kernel-level drivers or sneaky malware could still bypass it, but for normal everyday apps, it's solid.)
Testing each piece independently meant I had working C++ code with all the right headers, hook signatures, and process targets before even trying to connect the logic.
2. Integrating the Scripts with AI
After verifying that both scripts worked independently, the next step was integrating them into one mod. I used an LLM to write the glue logic.
Because I already had the working components in hand, I didn't need the AI to guess the architecture. I gave it both working codebases and explained how to merge them step-by-step:
Here are two working snippets:
1. A Windhawk mod that hooks into the taskbar tray to toggle icon visibility.
2. A C++ script reading the Windows registry (CapabilityAccessManager) to check active streams (LastUsedTimeStop == 0).
I want to integrate them into one unified Windhawk mod:
1. When mic usage changes in the registry, read the user whitelist from Windhawk settings.
2. Compare active process names against that whitelist.
3. If only whitelisted apps are running, trigger the hook to hide the tray icon. Otherwise, keep it visible.I didn't need to be a C++ expert or figure out complex Windows APIs from scratch. The AI handled connecting the logic and syntax, while the two working scripts kept everything grounded.
3. Iterating with Windhawk
Working with C++ injected directly into explorer.exe meant that any bug would crash the taskbar. Windhawk made testing manageable:
- Paste the generated code into Windhawk and hit Compile.
- Feed any compiler errors back to the AI.
- Use
Wh_Log()to inspect registry reads and process names live. - Test changes immediately without restarting Explorer or rebooting.
4. Testing Before Publishing
When you're building with AI in a language you don't fully understand, don't rush to publish it. Nobody wants untested, AI-generated junk that crashes their taskbar.
I wanted to be certain the mod was completely stable before sharing it with anyone. I ran it on my primary PC for a few months, monitoring memory and CPU usage, testing sleep/wake cycles, and making sure the icon never glitched. Once it ran quietly for weeks without a single hiccup, I published Adaptive Microphone Icon to the Windhawk repository.
The Takeaway
Starting with existing community mods and using an LLM to connect them made this doable without deep C++ knowledge. The key was keeping the components isolated, checking the Windows internals directly, and testing the code thoroughly.