从Windows上的系统工作的服务中获取用户文档文件夹.C++

Get user documents folder from service working from SYSTEM on Windows. C++

本文关键字:用户文档 获取 文件夹 C++ 工作 Windows 系统 服务      更新时间:2023-10-16

我正在通过winApi c++为Windows创建一个服务。系统用户开始服务工作。如何获取当前用户文档文件夹?

我知道方法

TCHAR DocumentsPath[MAX_PATH];
SHGetSpecialFolderPath(NULL, DocumentsPath, CSIDL_PERSONAL, TRUE);

但是,它返回其他文件夹,因为服务工作形式为系统。

有什么解决办法吗?

谢谢 RbMm。

它工作正常:

    ULONG SessionId = WTSGetActiveConsoleSessionId(); 
    if (SessionId != MAXDWORD) 
    { 
         HANDLE hToken; 
         if(WTSQueryUserToken(SessionId, &hToken)) 
         { 
             WCHAR DocumentsPath[MAX_PATH]; 
             SHGetFolderPath(0, CSIDL_PERSONAL, hToken, SHGFP_TYPE_CURRENT, DocumentsPath); 
             CloseHandle(hToken); 
         } 
    }