读取注册表项时 .Net 中的模拟崩溃 (LinkLabel SecurityException)

2023-12-20

我的应用程序需要模拟一个服务帐户,这是通过本机调用来完成的LogonUser。但是,.Net 库中的随机组件似乎会尝试访问该帐户无权访问的注册表项,从而导致SecurityException被扔掉。

具体来说,当我加载LinkLabel,它在尝试确定 IE 中的默认超链接颜色时崩溃:



System.Security.SecurityException: Requested registry access is not allowed.
      at System.ThrowHelper.ThrowSecurityException(ExceptionResource resource)
      at Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable)
      at Microsoft.Win32.RegistryKey.OpenSubKey(String name)
      at System.Windows.Forms.LinkUtilities.GetIEColor(String name)
      at System.Windows.Forms.LinkUtilities.get_IELinkColor()
      at System.Windows.Forms.LinkLabel.get_LinkColor()
      at System.Windows.Forms.LinkLabel.OnPaint(PaintEventArgs e)
      at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
      at System.Windows.Forms.Control.WmPaint(Message& m)
      at System.Windows.Forms.Control.WndProc(Message& m)
      at System.Windows.Forms.Label.WndProc(Message& m)
      at System.Windows.Forms.LinkLabel.WndProc(Message& msg)
      at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
      at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
The Zone of the assembly that failed was:  MyComputer
  

不,设置默认颜色没有帮助。


I found 这个线程 http://www.dotnetmonster.com/Uwe/Forum.aspx/dotnet-general/8052/Impersonation-and-LinkLabels-result-in-SecurityException遇到完全相同的问题,但恐怕我不明白解决方案:

注册表配置单元已加载LoadUserProfile存储在 HKU 下,HKCU 仍然是交互式登录用户的配置单元(由 winlogon.exe 加载)。

因此,如果您需要获取新加载的配置单元,您需要:
- 放Regkey to Registry.Users
- 使用您正在模拟的用户帐户的字符串 SID 打开子项。

有谁知道这有什么解决方法吗?


问题是您模拟的时间太长,并且您的代码(间接通过 .NET 框架)在模拟时访问的资源比您预期的要多。此异常似乎是由于您的模拟代码在 GUI (STA) 线程上运行而引起的。

You can:

  1. 模拟时间较短 - 只要您需要调用模拟,然后尽快撤消即可。即使后来发表了一项声明,您也必须重新冒充。这是典型的模仿模式。
  2. 将模拟代码移至工作线程 (MTA),您应该避免这种特定症状。现在您遇到了如何与模拟代码进行通信的问题,但这并不可怕。
  3. 如果您确实希望整个过程作为系统帐户运行(可能是最低权限之类的事情),我所知道的唯一支持的解决方案是让 HKEY_CURRENT_USER 成为系统帐户可以访问的东西。这是通过调用 LoadUserProfile 然后调用 CreateProcessAsUser 来完成的;但这是一个全新的架构,可以让您启动一个新的流程来处理模拟。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取注册表项时 .Net 中的模拟崩溃 (LinkLabel SecurityException) 的相关文章

  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • *.tlb 文件在运行时使用过吗?

    我正在开发一个通过 COM 互操作公开一些 NET API 的产品 作为构建的一部分 我们为所有此类程序集生成 tlb 文件 并将它们作为单独 SDK 包的一部分提供 我们的客户可以在我们的产品之上安装 SDK 并创建使用我们的 COM A
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 显示当前目录内容的便携方式

    我想在期间向用户提供附加信息restart case缺少输入文件 有没有一种便携式方法可以打印当前目录中的文件 请看一下文件系统概念 http clhs lisp se Body 20 a htm 特别是在directory http cl
  • 多线程参考? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 这个问题的答案是社区努力 help privileges edit community wiki 编辑现
  • 隐藏空
  • 我想隐藏所有 li 如果它们是空的或者里面有空格 li li 我这样做是这样的 li empty filter function i v return trim v text length 0 css display none 这是错误的语
  • 使用 Gekko 求解方程组时,是否有办法处理零超零问题?

    我正在使用 gekko 来 尝试 求解方程组 我遇到一个问题 因为我的方程中的一项类型是m asin q1 T q2 m sqrt 1 q1 T q2 2 where q1 and q2是 R3 中的单位向量 当它们方向相同时 分子和分母为
  • “include”指令可以在 nginx 的上游块中使用吗?

    我的网站使用两个应用程序服务器 即 app1 和 app2 因此在配置中我有这样的内容 upstream cluster server app1 8080 server app2 8080 由于每次更新代码时我都需要重新启动两个服务器进程并
  • 如何在Python中检查对象的类型? [复制]

    这个问题在这里已经有答案了 我的变量有一些值v 如何检查其类型 提示 事实并非如此v dtype 当我做type v 在调试器中 我得到 type v type
  • 使用ant检查可执行命令是否存在

    是否可以检查命令是否存在作为 ant 任务的一部分 例如 我想确保 yasm 命令作为 ant 任务的一部分出现 这可能吗 如果是这样 你能举个例子吗 以下习惯用法可用于在环境路径中的某个位置查找可执行文件
  • Node.js 中的password_hash 等效项

    我面临着需要验证通过 PHP 创建的密码的情况password hashNodejs 服务器上的方法 Does nodejs有一个可用的包相当于password hash and password verify 谢谢 就我而言 我在 php
  • 如何在python中获取图像指定区域中的所有像素坐标?

    图像中的区域由 4 个坐标定义x1 y1 x2 y2 x3 y3 x4 y4我想检索所有像素坐标x y在该区域内 假设是一个矩形 你可以使用np mgrid https docs scipy org doc numpy reference
  • Idea intellij 插件无法在 android studio 1.5.1 中工作

    我正在为 android studio 开发一个测试插件 当使用 从磁盘安装插件 添加时 我的插件可以在 Android studio 1 5 中工作 创建的操作可见 但同一个 jar 文件在 Android studio 1 5 1 中不
  • 如何彻底清除、重置和重启Cassandra集群?

    我有一个旧的 Cassandra 集群需要恢复活力 我想清除所有用户和系统数据 所有存储的令牌 所有内容并从头开始 有推荐的方法吗 以下是我用于 Apache Cassandra 的过程 首先在所有节点上停止 Cassandra 然后在每个
  • Facebook 登录 sdk - Android

    我正在尝试通过 Facebook 登录连接我的应用程序 我做了所有这些steps https developers facebook com docs facebook login android 我面临着一个奇怪的问题 所以登录按钮可以工
  • 使用 SharpZipLib 解压缩特定文件?

    我正在尝试使用 SharpZipLib 从 zip 存档中提取指定的文件 我见过的所有示例总是期望您想要解压缩整个 zip 并执行以下操作 FileStream fileStreamIn new FileStream sourcePath
  • 递归SQL和不同级别的信息

    是否可以在同一查询中显示有关不同递归级别的信息 select LEVEL ae2 CAB ae2 NIVEAU ae2 ENTITE ae2 ENTITE PARENT ae2 libelle from my table ae2 where
  • 在 R 中读取 JSON 文件时出现问题

    我有一个 JSON 文件 从 mongoDB 导出 我想将其加载到 R 中 该文档大小约为 890 MB 大约有 63 000 行 每行 12 个字段 这些字段是数字 字符和日期 我想最终得到一个 63000 x 12 的数据框 lines
  • 动态规划的硬币找零算法

    我在动态规划方面面临困难 我正在尝试解决简单的硬币找零问题 我正在尝试使用自上而下的方法进行记忆 但我得到了 TLE 这是我的代码 include
  • 我如何设置heroku postgresql应用程序的路径?

    我刚刚安装了heroku PSQL 应用程序 v1 0 但无法使用gem pg 0 1 4 连接我的rails 应用程序 我已经将路径 PATH Applications Postgres app Contents MacOS bin PA
  • 如何使用 CsvHelper 解析时处理空列?

    我有一个 CSV 文件 我正在尝试解析它 但是在 int 数据类型列上出现以下错误 在文件中 我传递了该列的空白或空值 AutoMap typeof Test FileEntity Test public class TestFileEnt
  • 新的放置和 const 成员的类分配

    为什么这是未定义的行为 struct s const int id lt const member s int id id id s operator const s m return new this s m lt undefined b
  • 读取注册表项时 .Net 中的模拟崩溃 (LinkLabel SecurityException)

    我的应用程序需要模拟一个服务帐户 这是通过本机调用来完成的LogonUser 但是 Net 库中的随机组件似乎会尝试访问该帐户无权访问的注册表项 从而导致SecurityException被扔掉 具体来说 当我加载LinkLabel 它在尝