From d08a581eb1dc5b9f0d46843d73bb85d0830f1f31 Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Fri, 29 May 2026 12:56:00 +0900 Subject: [PATCH] [EXPLORER] Implement ShowUndockMenuItem (#9068) Follow-up of #9036. ShowUndockMenuItem function will detect system undocking ability. JIRA issue: CORE-10675 - Do #include in startmnusite.cpp. - Implement ShowUndockMenuItem by using setupapi!CM_Is_Dock_Station_Present function. --- base/shell/explorer/startmnusite.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/base/shell/explorer/startmnusite.cpp b/base/shell/explorer/startmnusite.cpp index ceed50d37bd..5511d72f760 100644 --- a/base/shell/explorer/startmnusite.cpp +++ b/base/shell/explorer/startmnusite.cpp @@ -19,6 +19,7 @@ */ #include "precomp.h" +#include class CStartMenuSite : public CComCoClass, @@ -99,12 +100,15 @@ public: return E_NOTIMPL; } - virtual BOOL - ShowUndockMenuItem(VOID) + virtual BOOL ShowUndockMenuItem(VOID) { - TRACE("ShowUndockMenuItem() not implemented!\n"); - /* FIXME: How do we detect this?! */ - return FALSE; + BOOL bPresent; + CM_Is_Dock_Station_Present(&bPresent); + + return bPresent && + !SHRestricted(REST_NOSMEJECTPC) && + SHTestTokenPrivilegeW(NULL, L"SeUndockPrivilege") && + !GetSystemMetrics(SM_REMOTESESSION); } virtual BOOL