如何在Windows 11中为Win32进程自定义任务管理器描述?
Windows 11进程自定义描述机制详解
一、实现原理
Windows 11 22H2及后续版本引入了进程描述覆盖机制,允许应用为同一可执行文件的不同进程设置专属描述,核心通过ntdll.dll导出的SetProcessInformation API实现:
关键细节
- 需指定
ProcessDescriptionInformation作为PROCESS_INFORMATION_CLASS枚举值(对应数值0x22,可通过winternl.h获取官方定义) - 传入
PROCESS_DESCRIPTION_INFORMATION结构体,其中包含UNICODE_STRING类型的自定义描述字符串 - 进程可自行调用该API设置自身描述,拥有
PROCESS_SET_INFORMATION权限的进程也可为其他进程设置
代码示例(C++)
#include <windows.h> #include <winternl.h> typedef struct _PROCESS_DESCRIPTION_INFORMATION { UNICODE_STRING Description; } PROCESS_DESCRIPTION_INFORMATION, *PPROCESS_DESCRIPTION_INFORMATION; typedef NTSTATUS(NTAPI* pSetProcessInformation)( HANDLE ProcessHandle, PROCESS_INFORMATION_CLASS ProcessInformationClass, PVOID ProcessInformation, ULONG ProcessInformationLength ); int wmain() { pSetProcessInformation SetProcessInfo = (pSetProcessInformation)GetProcAddress(GetModuleHandle(L"ntdll.dll"), "SetProcessInformation"); if (!SetProcessInfo) return 1; WCHAR customDesc[] = L"我的子进程专属描述"; UNICODE_STRING descStr; RtlInitUnicodeString(&descStr, customDesc); PROCESS_DESCRIPTION_INFORMATION info = { descStr }; NTSTATUS status = SetProcessInfo( GetCurrentProcess(), ProcessDescriptionInformation, &info, sizeof(PROCESS_DESCRIPTION_INFORMATION) ); return NT_SUCCESS(status) ? 0 : 1; }
二、对普通Win32应用的开放性
该机制完全对所有Win32应用开放,适配你的多进程/单可执行文件场景:
- 子进程启动后可自行调用
SetProcessInformation设置专属描述 - 主进程也可在创建子进程后,通过子进程句柄调用该API为其设置描述
- 仅Windows 11 22H2及以上版本的任务管理器会读取并显示该自定义描述,Process Explorer等工具暂未适配此信息读取逻辑
内容的提问来源于stack exchange,提问作者Timothy Fries
相关产品推荐
相关产品推荐

