diff options
| author | sumuel <samuel@yakubos.org> | 2026-08-17 20:44:55 +0000 |
|---|---|---|
| committer | sumuel <samuel@yakubos.org> | 2026-08-17 20:44:55 +0000 |
| commit | 76424950e373d3b04ac3dd13019151bfba3e8423 (patch) | |
| tree | 4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /src/detection/icons/icons_windows.c | |
Add the files
Diffstat (limited to 'src/detection/icons/icons_windows.c')
| -rw-r--r-- | src/detection/icons/icons_windows.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/detection/icons/icons_windows.c b/src/detection/icons/icons_windows.c new file mode 100644 index 0000000..e199432 --- /dev/null +++ b/src/detection/icons/icons_windows.c @@ -0,0 +1,47 @@ +#include "icons.h" +#include "common/windows/registry.h" + +const char* ffDetectIcons(FFIconsResult* result) { + FF_AUTO_CLOSE_FD HANDLE hKey = NULL; + if (!ffRegOpenKeyForRead(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\NewStartPanel", &hKey, NULL) && + !ffRegOpenKeyForRead(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\ClassicStartMenu", &hKey, NULL)) { + // If the key doesn't exist, it means that the user never changed the default settings. + ffStrbufSetStatic(&result->icons2, "Recycle Bin"); + return NULL; + } + + // Whether these icons are hidden + uint32_t ThisPC = 1, UsersFiles = 1, RemoteNetwork = 1, RecycleBin = 0 /* Shown by default */, ControlPanel = 1; + ffRegReadUint(hKey, L"{20D04FE0-3AEA-1069-A2D8-08002B30309D}", &ThisPC, NULL); + ffRegReadUint(hKey, L"{59031a47-3f72-44a7-89c5-5595fe6b30ee}", &UsersFiles, NULL); + ffRegReadUint(hKey, L"{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}", &RemoteNetwork, NULL); + ffRegReadUint(hKey, L"{645FF040-5081-101B-9F08-00AA002F954E}", &RecycleBin, NULL); + ffRegReadUint(hKey, L"{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}", &ControlPanel, NULL); + + if (ThisPC && UsersFiles && RemoteNetwork && RecycleBin && ControlPanel) { + return "All icons are hidden"; + } + + if (!ThisPC) { + ffStrbufAppendS(&result->icons1, "This PC, "); + } + if (!UsersFiles) { + ffStrbufAppendS(&result->icons1, "User's Files"); + } + ffStrbufTrimRight(&result->icons1, ' '); + ffStrbufTrimRight(&result->icons1, ','); + + if (!RemoteNetwork) { + ffStrbufAppendS(&result->icons2, "Remote Network, "); + } + if (!RecycleBin) { + ffStrbufAppendS(&result->icons2, "Recycle Bin, "); + } + if (!ControlPanel) { + ffStrbufAppendS(&result->icons2, "Control Panel"); + } + ffStrbufTrimRight(&result->icons2, ' '); + ffStrbufTrimRight(&result->icons2, ','); + + return NULL; +} |