是否在InnoSetup安装程序中获取用户主体名称(UPN)? [英] Get User Principal Name (UPN) In InnoSetup Installer?

查看:5
本文介绍了是否在InnoSetup安装程序中获取用户主体名称(UPN)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在InitializeSetup()函数和其他操作中,当安装程序运行时,我希望安装程序检索当前的UPN。UserName变量不够。我还尝试了使用WTSQuerySessionInformation()函数的这里讨论的方法,但它们似乎没有返回我想要的结果。根据组织和设置的不同,UPN应该经常返回我正在寻找的某种电子邮件地址。有人能解释一下如何以字符串形式返回完整的UPN值吗?谢谢。

编辑:

我还尝试了GetUserNameExW()函数,它将值8作为引用UserNameain的输入传入,但似乎返回的值为空值。

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);

推荐答案

我已设法自己解决了此问题,但仍不能百分之百确定上一次迭代导致异常行为的原因。

基本上,我必须在此之前添加一个if检查:

if GetUserNameExW(8, OutStr, NumChars) then

这篇关于是否在InnoSetup安装程序中获取用户主体名称(UPN)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆