ExpandEnvironmentStringsForUser() API does NOT expand the environment variable %USERNAME% on Windows 7.

ExpandEnvironmentStringsForUser() API does not expand the environment variable %USERNAME% on Windows 7 and Windows Server 2008 R2, if hToken value is obtained  only by using TOKEN_IMPERSONATE | TOKEN_QUERY flags for OpenProcessToken.  To expand the environment variables like %USERNAME%  on Windows 7 & Windows Server 2008 R2, you also need to add TOKEN_DUPLICATE as well. 

For application that may run on all versions of Windows, it is recommended that you obtain the token handle with all 3 access rights: TOKEN_QUERY, TOKEN_DUPLICATE and TOKEN_IMPERSONATE


if (ret == FALSE)
return GetLastError();
ExpandEnvironmentStringsForUser(hProcessToken, L"%USERNAME%", (LPWSTR)envBuf, 


Windows SDK

Comments (0)