gpt4 book ai didi

resharper - WindowsIdentity.GetCurrent() 可以返回 null 吗?

转载 作者:行者123 更新时间:2023-12-02 22:09:15 28 4
gpt4 key购买 nike

ReSharper 警告我可能出现 NullReferenceException

WindowsIdentity windowsIdentity = new WindowsIdentity(WindowsIdentity.GetCurrent().Token);

我查看了 MSDN 文档,但没有看到任何提及这一点。另外,这没有意义,因为如果您运行可执行文件,则必须登录。

这只是 ReSharper 搜索模式吗?

最佳答案

使用 ILSpy,您可以查看 GetCurrentGetCurrentInternal 的反编译版本,GetCurrent 会调用它们。

获取当前:

public static WindowsIdentity GetCurrent()
{
return WindowsIdentity.GetCurrentInternal(TokenAccessLevels.MaximumAllowed, false);
}

获取当前内部:

internal static WindowsIdentity GetCurrentInternal(TokenAccessLevels desiredAccess, bool threadOnly)
{
int errorCode = 0;
bool flag;
SafeTokenHandle currentToken = WindowsIdentity.GetCurrentToken(desiredAccess, threadOnly, out flag, out errorCode);
if (currentToken != null && !currentToken.IsInvalid)
{
WindowsIdentity windowsIdentity = new WindowsIdentity();
windowsIdentity.m_safeTokenHandle.Dispose();
windowsIdentity.m_safeTokenHandle = currentToken;
return windowsIdentity;
}
if (threadOnly && !flag)
{
return null;
}
throw new SecurityException(Win32Native.GetMessage(errorCode));
}

由于从 GetCurrent 调用时 threadOnly 始终为 false,并且 currentToken 必须对其他 return 语句有效,因此我不这样做认为您有获得 null WindowsIdentity 的风险。

关于resharper - WindowsIdentity.GetCurrent() 可以返回 null 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15998381/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com