gpt4 book ai didi

.net - .NET 控制台应用程序中的 Thread.CurrentPrincipal

转载 作者:行者123 更新时间:2023-12-02 18:04:20 24 4
gpt4 key购买 nike

这是我在命令提示符下运行的一个简单的控制台应用程序:

using System;
using System.Threading;
namespace Test
{
internal class Runner
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine(Thread.CurrentPrincipal.GetType().Name);
Console.WriteLine(Thread.CurrentPrincipal.Identity.Name);
}
}
}

输出为“GenericPrincipal”,空字符串作为身份名称。为什么运行时构造 GenericPrincipal 而不是 WindowsPrincipal?我如何强制它从启动进程的安全 token (在我的例子中为 cmd.exe)构造 WindowsPrincipal

最佳答案

您必须告诉您的应用程序要使用什么PrincipalPolicy。您将添加

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

让你的代码看起来像:

using System;
using System.Threading;
using System.Security.Principal;

namespace Test
{
internal class Runner
{
[STAThread]
static void Main(string[] args)
{
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
Console.WriteLine(Thread.CurrentPrincipal.GetType().Name);
Console.WriteLine(Thread.CurrentPrincipal.Identity.Name);
}
}
}

参见http://msdn.microsoft.com/en-us/library/system.appdomain.setprincipalpolicy.aspx

关于.net - .NET 控制台应用程序中的 Thread.CurrentPrincipal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4421971/

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