Winapi 从提升的权限获取SHGetFolderPath的当前登录安全令牌

Winapi 从提升的权限获取SHGetFolderPath的当前登录安全令牌,winapi,Winapi,我需要通过SHGetFolderPath为当前用户获取系统文件夹,但在安装程序应用程序中,系统将其提升到管理员帐户,并返回管理员帐户文件夹。如何为当前用户获取安全令牌?我试过这个: HANDLE token = NULL; PWTS_SESSION_INFO sessions; DWORD cnt = 0; WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, &sessions, &cnt); for (DWORD i=0;

我需要通过SHGetFolderPath为当前用户获取系统文件夹,但在安装程序应用程序中,系统将其提升到管理员帐户,并返回管理员帐户文件夹。如何为当前用户获取安全令牌?我试过这个:

HANDLE token = NULL;
PWTS_SESSION_INFO sessions;
DWORD cnt = 0;
WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, &sessions, &cnt);
for (DWORD i=0; i<cnt; i++)
{
    if (WTSActive == sessions->State)
    {
        WTSQueryUserToken(sessions->SessionId, &token);
        break;
    };
    sessions++;
};
handletoken=NULL;
PWTS_会话_信息会话;
DWORD cnt=0;
WTSEnumerateSessions(WTS\u当前\u服务器\u句柄、0、1和会话以及cnt);
用于(DWORD i=0;iState)
{
WTSQueryUserToken(会话->会话ID和令牌);
打破
};
会话++;
};

但它并没有真正起作用。有什么想法吗?

可能获取shell进程id(资源管理器),从中获取令牌并在查询中使用此令牌

if (HWND hwnd = GetShellWindow())
{
    ULONG dwProcessId;
    if (GetWindowThreadProcessId(hwnd, &dwProcessId))
    {
        HANDLE hToken;
        if (HANDLE hProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, dwProcessId))
        {
            BOOL b = OpenProcessToken(hProcess, TOKEN_QUERY|TOKEN_IMPERSONATE, &hToken);
            CloseHandle(hProcess);
            if (b)
            {
                if (0 <= SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, hToken, &pszPath))
                {
                    DbgPrint("<%S>\n", pszPath);
                    CoTaskMemFree(pszPath);
                }
                CloseHandle(hToken);
            }
        }
    }
}
if(HWND HWND=GetShellWindow())
{
ULONG dwProcessId;
if(GetWindowThreadProcessId(hwnd和dwProcessId))
{
拉赫托肯;
if(HANDLE hProcess=OpenProcess(PROCESS\u QUERY\u LIMITED\u INFORMATION,FALSE,dwProcessId))
{
BOOL b=OpenProcessToken(hProcess、TOKEN\u QUERY、TOKEN\u IMPERSONATE和hToken);
CloseHandle(hProcess);
如果(b)
{

如果(0)请参见此处:您还必须加载用户配置文件。@SimonMourier-您还必须加载用户配置文件-但在这种情况下,用户配置文件已加载SEXY解决方案!运行良好!