获取模拟用户名

2024-04-04

我有一个类需要知道当前有效的用户名。Environment.UserName or WindowsIdentity.GetCurrent().Name是为了那个。但是当启用模拟时,它们会返回LocalUser名称不是ImpersonatedUser name.

如何获取当前模拟用户的名称?

该应用程序是 C# 控制台应用程序,我知道模拟是有效的,因为我获得了以下权限ImpersonatedUser。当然,我可以让模拟代码将模拟的用户名保存到某个全局变量中,但这是错误的。

UPDATE:

模拟代码:

if (LogonUser(userName, domain, password, LOGON32_LOGON_NEW_CREDENTIALS/*=9*/, LOGON32_PROVIDER_DEFAULT, ref token) != 0)
{
  if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
  {
    WindowsIdentity tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
    _impersonationContext = tempWindowsIdentity.Impersonate();

    // WindowsIdentity.GetCurrent().Name equals "LocalUser" 
    // while userName equals "ImpersonatedUser"
    ...

我可以控制模拟代码,但我更愿意使其独立于解决方案的其他部分。


就这个(实例会员)

WindowsIdentity.Name

http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx

您甚至不必调用 Impersonate()。

EDIT

在没有访问权限或不了解冒充行为的情况下,

WindowsIdentity.GetCurrent(false).Name
(same as)
WindowsIdentity.GetCurrent().Name

应该管用。http://msdn.microsoft.com/en-us/library/x22bbxz6.aspx http://msdn.microsoft.com/en-us/library/x22bbxz6.aspx

false 则返回线程的 WindowsIdentity(如果正在模拟)或进程的 WindowsIdentity(如果线程当前未模拟)。


If you were using LOGON32_LOGON_NEW_CREDENTIALS, bear in mind that (http://www.pcreview.co.uk/forums/logonuser-issues-t1385578.html http://www.pcreview.co.uk/forums/logonuser-issues-t1385578.html) the logged in context remains unchanged while a second token is created for remote resources - this is why your WindowsIdentity.Name remains unchanged - in effect it is still correct, because you have not actually impersonated the identity, all you have is a token to access resources as the secondary identity while the entire program/thread is still running under the original Windows Identity.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取模拟用户名 的相关文章

  • 如何向WebRequest添加参数?

    我需要从 Web 服务调用一个方法 所以我编写了以下代码 private string urlPath http xxx xxx xxx manager string request urlPath index php org get or
  • 框架中有通用的交换方法吗?

    框架中是否存在这样的方法 public static void Swap
  • 有没有办法在 C# 中仅通过文件名查找文件?

    我们现在使用绝对路径或相对路径在 C 应用程序中查找文件 如果文件位于当前工作目录下或 路径 之一下 有没有办法仅通过名称查找文件 使用绝对路径不好 使用相对路径也不够好 因为我们可能通过重命名或移动项目文件夹来更改项目结构 如果我们的代码
  • 如何在 C# 中从这个分层父子结构中查找任何项目

    如何从列表中查找任何项目 因为它是动态的 它可能位于列表的任何位置的父项或子项中 并且当子项计数为0时需要停止查找 下面是列表的模型和分层父子结构示例 例子 父级 gt 子级 gt 子级 gt 子级或父级 gt 子级 gt 子级 gt 子级
  • 与常规 SQL 查询不同,为什么“linq to sql”查询以 FROM 关键字开头?

    为什么 linq to sql 查询以FROM与常规 SQL 查询不同的关键字 LINQ 模仿Logical Query processing在 SQL 中你有 8 SELECT 9 DISTINCT 11 TOP 1 FROM 2 ON
  • 了解 C# 中的协变和逆变接口

    我在一本有关 C 的教科书中遇到过这些内容 但我很难理解它们 可能是由于缺乏上下文 对于它们是什么以及它们有什么用处 是否有一个很好的简洁解释 编辑以澄清 协变接口 interface IBibble
  • 实体框架中的 DbSet [重复]

    这个问题在这里已经有答案了 我在实体框架中有以下代码 using var dbc new TestDbContext var data from a in dbc tableList select new a id ToList 当我调试代
  • Rx.NET 中是否有一个Subject 实现,其功能类似于BehaviourSubject,但仅在值发生更改时才发出?

    有没有Subject https learn microsoft com en us previous versions dotnet reactive extensions hh229699 v vs 103 Rx NET 中的实现在功能
  • 从共享网络文件夹运行的 .NET 应用程序的性能损失

    从共享网络文件夹运行 NET 4 0 应用程序是否有任何性能损失 我发现哪个应用程序启动速度较慢 但 在使用时没有注意到任何变慢 但不确定 当通过网络运行可执行文件时 Windows 不会在应用程序启动时通过网络传输整个应用程序 这样做是为
  • LINQ 中“最受欢迎”的 GROUP BY?

    假设有一个标签表 例如 stackoverflow 问题标签 TagID bigint QuestionID bigint 标签 varchar 使用 LINQ 获取 25 个最常用标签的最有效方法是什么 在 SQL 中 一个简单的 GRO
  • 如何在嵌套列表视图中编辑数据

    我使用列表视图来显示项目列表 并使用嵌套列表视图来显示每个项目的功能列表 父列表视图和子列表视图都需要能够进行插入 编辑和删除操作 它适用于父列表视图 但是 当我尝试编辑子项目时 编辑按钮不会将其带入编辑模式 您能建议我代码中缺少什么吗
  • ASP.NET AJAX 进度条:从代码隐藏更新?

    我在应用程序中具有 Excel 电子表格的导入功能 目前它使用 FileUpload 控件 我上传文件 然后对该文件运行操作 我想通知用户正在完成的操作以及完成的百分比 我认为我可以获取从 Excel 电子表格中提取的总行数 并在将每条记录
  • 在 ViewModel 中使用 CollectionViewSource 的正确方法

    我使用拖放将数据源对象 数据库模型 绑定到DataGrid 基本上遵循这个例子实体框架与 WPF 的数据绑定 http msdn microsoft com en us data jj574514 通过这个实现 一切都运行良好 XAML
  • 如何禁用 WebBrowser 控件中的点击声音

    我使用 Javascript 单击网络浏览器控件中的链接 但我不想听到IE的 咔哒 声 有什么办法可以做到这一点吗 P S 我不想更改系统设置 我见过这个 如何仅在您的应用程序中禁用网络浏览器 点击声音 https stackoverflo
  • 如何使用 .NET Core 解析 MPEG 视频流

    对于个人项目 我尝试读取 IP 摄像机的 MPEG 流 并对收到的各个帧执行一些计算机视觉任务 使用 NET Core 2 2 我执行一个GET向相机的 MPEG 端点发出请求 我收到一个multipart x mixed replace响
  • 在 Visual Studio 2012 Express 上通过 Nuget 的 NUnit.Runners 不起作用

    我正在尝试使用 NuGet 管理器在 Visual Studio 2012 Express 中设置简单的 NUnit 项目 从 PROJECT gt Manage NuGet Packages 我安装了 NUnit 框架 并想要添加 NUn
  • Parallel.ForEach - 优雅取消

    关于等待任务完成和线程同步的主题 我目前有一个迭代 我已将其包含在 Parallel ForEach 中 在下面的示例中 我在评论中提出了一些关于如何最好地处理循环的优雅终止的问题 NET 4 0 private void myFuncti
  • 运行 Aero 时如何确定实际窗口窗体大小(包含所有非客户端元素)?

    我试图将我的表单精确定位在任务栏上方 不幸的是 我的努力受到了以下事实的阻碍 this Height在我的表单上返回一个比实际表单 包含所有边框 标题栏等 小 10 像素的值 我正在运行带 Aero 的 Windows 7 当 Aero 关
  • Silverlight 4 PLINQ

    我有一个非常简单的问题 是否可以将 PLINQ 与 Silverlight 4 一起使用 因为它似乎不存在于最常引用的程序集中 它不受支持 但您可以在这里投票 http dotnet uservoice com forums 4325 si
  • 使用 Crypto++ 和 .NET 的 CFB 模式下的 TripleDES

    我正在尝试使用 TripleDES 使用 C 应用程序获得相同的结果 该应用程序具有Crypto https www cryptopp com 和 NET应用程序使用三重DESCryptoServiceProvider https msdn

随机推荐

  • 使用另一个 numpy 数组元素作为索引向量化更新 numpy 数组

    设 A C 和 B 是行数相同的 numpy 数组 我想更新 A 0 的第 0 个元素 A 1 的第 2 个元素等 即将 A i 的第 B i 个元素更新为 C i import numpy as np A np array 1 2 3 3
  • Angularjs:滚动到div底部

    我无法滚动到最后一条消息 var app angular module myApp ngMaterial app controller ChatCtrl function window anchorScroll var self this
  • 如何解决错误:SOAP-ERROR:编码:对象没有“createLead”属性?

    我编写了一个应该连接到安全 Web 服务 ws security 的脚本 但是 运行脚本时 我收到此错误 Error SOAP ERROR Encoding object has no createLead property 我正在使用这段
  • 如何让“font-weight: lighter”在 Google Chrome 中正常工作?

    在 Google Chrome 可能还有 Safari 中 font weight normal 和 font weight bold 之间似乎没有任何区别 有没有人找到一种方法可以像 Firefox 那样在 Chrome 中调用 font
  • 为什么在 URL 中使用感叹号? [复制]

    这个问题在这里已经有答案了 可能的重复 Facebook 和新 Twitter URL 中的 shebang 有何用途 https stackoverflow com questions 3009380 whats the shebang
  • Cocoa contentOfDirectoryAtPath:某些用户的方法失败并出现错误 - Mac OS X

    这是代码片段 Get into the data folder of it keychainPath keychainPath stringByAppendingPathComponent data default DLog Keychai
  • 注意:未定义的索引[重复]

    这个问题在这里已经有答案了 我有一个复选框可以保护帖子密码 p strong strong p
  • Symfony2 自定义表单错误消息

    你能帮我了解如何使用 Symfony2 自定义表单中的错误消息吗 我想更改 HTML 布局 添加 div 类等 阅读指南 它给出了一段代码 可以放入一个名为的文件中fields errors html twig但它没有告诉将该文件放在哪里以
  • 在 c 函数内分配数组

    我正在尝试在函数内分配和初始化数组 但返回后似乎无法获取值 这是我最后一次几乎可行的尝试 include
  • 如何在 CodeIgniter 中计算具有特定年份日期的行数?

    我有以下查询 query this gt db gt query SELECT COUNT FROM iplog persons WHERE begin date LIKE 2014 我需要计算 2014 年 begin date 的列数
  • 如何在 OpenAPI 3.0 中全局设置 Accept header?

    我通过 SwaggerHub 设置了新的 OpenAPI 是否有一个选项可以强制执行某些操作Accept全局标题 我已经设置了Content Type关于回应 openapi 3 0 0 paths test path get respon
  • AirPlay 的音频输出路由

    我已经查看过 但找不到访问音频输出路由的方法 因此我可以检测音频是否通过 AirPlay 输出 这是我在 iOS 5 0 文档中找到的 kAudioSessionOutputRoute AirPlay 讨论 这些字符串用作与 kAudioS
  • 从 varchar 字段中仅选择单词的首字母

    我在一次采访中被问到 一个来自oracle sql的问题 这似乎是一个简单的问题 但我不知道如何回答 有人可以帮忙吗 如果某列中有 纽约是一座美丽的城市 这样的字符串 select column name from table name 将
  • 绝对定位的弹性盒不会扩展以适应内容[重复]

    这个问题在这里已经有答案了 正如您从下面的代码片段中看到的 查看小提琴 http jsfiddle net tekm28wy 绝对定位的柱状弹性盒不会扩展以适合其子级 例如 在 Chrome 中 它的宽度仅与最宽的子元素一样宽 高度与最短的
  • 为什么使用公共变量?

    变量 方法和类可以获得不同的安全级别 根据我的 C 经验 有 public内部的受保护的受保护的内部私人的 现在 我了解了将方法和类设为私有 内部或受保护的用途 但是变量呢 即使我将变量设置为私有 我也可以使用属性从不同的类中调用它 我一直
  • 计算变化率

    我有一个名为 yield 的数据集 yield lt data frame fruits c apples apples apples oranges oranges oranges pears pears pears year rep 2
  • xslt需要选择单引号

    我需要这样做
  • YouTube API 配额限制和可扩展的应用程序

    我目前正在开发一个需要通过 youtube 上传视频的应用程序 我计划通过 youtube API 在应用程序中分享视频 根据文档 在 YouTube 上分享视频需要 大约 16000 个单位 每个应用程序都有 500 万个单位的补充配额
  • C++ VS2013 调试器断点:未命中

    我有一个相对简单的 C 控制台项目 它执行一些计算并写入输出文件 我试图确定为什么输出文件没有正确的输出 相反 我一直在与调试器作斗争 由于某种原因我无法添加断点在某个函数的某一行之后 无法到达第 1106 行之后到第 1214 行 函数末
  • 获取模拟用户名

    我有一个类需要知道当前有效的用户名 Environment UserName or WindowsIdentity GetCurrent Name是为了那个 但是当启用模拟时 它们会返回LocalUser名称不是ImpersonatedUs