在 InitializeSetup() 函数以及其他操作中,当安装程序运行时,我希望安装程序检索当前的 UPN。UserName 变量是不够的。我也尝试过使用 WTSQuerySessionInformation() 函数在此处讨论的方法,但它们似乎没有返回我正在寻找的内容。根据组织和设置,UPN 通常应该返回某种我正在寻找的电子邮件地址。有人可以阐明如何将完整的 UPN 值作为字符串返回吗?谢谢你。
编辑:
我还尝试了 GetUserNameExW() 函数,将值 8 作为引用 UserNamePrincipal 的输入传递,但是我似乎返回了一个空值。
function GetUserNameExW(NameFormat: Integer; lpNameBuffer: string; var nSize: DWORD): Boolean;
external 'GetUserNameExW@secur32.dll stdcall';
var
NumChars: DWORD;
OutStr: string;
name: string;
begin
SetLength(OutStr, NumChars);
GetUserNameExW(8, OutStr, NumChars);
name := Copy(OutStr,1,NumChars);