.NET 控制台应用程序中的 Thread.CurrentPrincipal
这是我在命令提示符下运行的一个简单的控制台应用程序:
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
?我如何强制它从启动进程的安全令牌(在我的例子中为 cmd.exe)构造 WindowsPrincipal
?
Here is a trivial console application that i run in command prompt:
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);
}
}
}
The output is 'GenericPrincipal' and empty string as identity name. Why the run-time constructs GenericPrincipal
instead of WindowsPrincipal
? How do i force it to construct WindowsPrincipal
from the security token of the starting process (cmd.exe in my case)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您必须告诉您的应用程序要使用什么PrincipalPolicy。您可以添加
使代码如下所示:
请参阅 http://msdn.microsoft.com/ en-us/library/system.appdomain.setprincipalpolicy.aspx
You have to tell your app what PrincipalPolicy to use. You would add
making your code look like:
See http://msdn.microsoft.com/en-us/library/system.appdomain.setprincipalpolicy.aspx