c# 更改AD密码Directoryservices

2024-01-30

我试图让下面的代码工作,问题是,有时可以,有时不可以。 当失败时,会出现错误 0x800704F1“系统无法联系域控制器来服务身份验证请求” 我想说大约 90% 的情况都会失败。 我尝试通过将其添加到 contexttype 后面来给它一个静态 DC,遗憾的是这没有帮助。 在管理员用户上它始终有效..但是我确实相信用户应该能够更改自己的密码。 该错误是在 user.changepassword 行上触发的

我希望其他人有一个好主意。

        using (var context = new PrincipalContext(ContextType.Domain))
        {
            using (var user = UserPrincipal.Current)
            {
                try
                {
                    user.ChangePassword(txt_old.Text, txt_new.Text);
                    user.Save();

                }
                catch(Exception p)
                {
                    if (p.HResult.Equals("0x800708C5"))//Not secure enough according to password policy
                    {
                        MessageBox.Show("Volgens het systeem is uw nieuwe wachtwoord niet veilig genoeg, voldoet het aan alle eisen?", "Niet gelukt", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                    else if (p.HResult.Equals("0x80070056")) //Wrong current password
                    {
                        MessageBox.Show("U heeft een verkeerd huidig wachtwoord ingevult, probeer het nogmaals", "Verkeerd wachtwoord", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                    else if (p.InnerException.ToString().Contains("0x80070775")) //Temporarly locked out.
                    {
                        MessageBox.Show("Uw account is tijdelijk vergrendeld door te veel pogingen tot in te loggen met een foutief wachtwoord. Probeer het over 15minuten nogmaals of neem contact op met de helpdesk.", "vergrendeld.", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                    else
                    {
                        MessageBox.Show(System.Security.Principal.WindowsIdentity.GetCurrent().Name + Environment.NewLine + p.HResult + Environment.NewLine + p.Message);
                        return;
                    }
                }
            }
        }

两个 Windows 更新 3177108 和 3167679 更改了 ChangePassword 的行为。

这里有一个关于这个问题的线程:https://social.msdn.microsoft.com/Forums/vstudio/en-US/77dc733e-a13d-4349-9088-8065b85d5c3f/userprincipalchangepassword-stops-working-after-windows-updates-3177108-and-3167679?forum= NETFXBCL https://social.msdn.microsoft.com/Forums/vstudio/en-US/77dc733e-a13d-4349-9088-8065b85d5c3f/userprincipalchangepassword-stops-working-after-windows-updates-3177108-and-3167679?forum=netfxbcl

看来,您现在必须在创建 PrimaryContext 时指定有效的 UPN。

在创建上下文时可以使用 IP 作为端点之前,现在看来它也必须是正确的域名。

此外,现在,当发生错误时,您总是会收到相同的异常 - 我们过去会因用户选择的密码不足而收到密码策略异常,现在我们得到:

System.DirectoryServices.AccountManagement.PrincipalOperationException: 系统无法联系域控制器来提供服务 身份验证请求。请稍后再试。 (例外情况来自 H结果:0x800704F1)

2016 年 10 月 4 日更新: 上面显示的异常实际上是更新后调用 ChangePassword 时收到的几乎所有错误。 例如,如果协议中涉及的某些端口被防火墙阻止,您也会得到这个端口(如果您从未加入域的服务器/计算机进行调用,则适用)。

所需端口的良好资源:https://technet.microsoft.com/en-us/library/dd772723(v=ws.10).aspx https://technet.microsoft.com/en-us/library/dd772723(v=ws.10).aspx请注意,动态范围也是必需的。

如果不允许用户更改密码(域策略,通过设置“下次登录标志时必须更改”来规避),您也会收到此异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c# 更改AD密码Directoryservices 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的

随机推荐

  • 如何在erlang中连接列表而不创建嵌套列表?

    我正在努力成为一名优秀的管理者并避免使用 我需要将一个元组添加到列表的末尾 而不创建嵌套列表 并且希望不必向后构建它并反转它 给定元组 T 和列表 L0 和 L1 当我使用 T L0 I get 元组 列表0 但是当我使用 L0 T 我得到
  • 如何从 Angular 应用程序范围之外更改 Angular 中的路由?

    我的问题标题可能有点令人困惑 所以希望以下详细信息能够澄清它 本质上 导航栏是我无法控制的 它是用简单的 HTML JS 编写的 我的应用程序是用 Angular 编写的 并在其中设置了路由 我可以做些什么来从导航栏触发 Angular 应
  • 复合类型的案例类伴生对象生成错误

    定义的空特征测试 trait Test 复合类型中使用什么 scala gt val a Int with Test 10 asInstanceOf Int with Test a Int with Test 10 以及带有复合类型参数的案
  • 如何在 Android 中访问 Web API 方法的返回值?

    在对如何做到这一点感到困惑之后 可以看出here https stackoverflow com questions 22797194 how to call a restful method from android and here h
  • 使用 asp.net ajax 时出现函数未定义错误

    我试图通过以下代码通过 asp net ajax 调用 Web 服务 namespace MCTS70515AJAX public static class HR public static int GetEmployeeCount str
  • 为 GitHub 设置 SSH 密钥

    我正在跟进这些说明 http help github com mac set up git 了解如何设置 SSH 密钥以用于 GitHub 说明会告诉您删除当前的 ssh目录并在该 ssh 目录中创建新密钥 我无法执行此操作 因为我的电脑中
  • AngularJS 中的子菜单(展开/折叠树)

    在过去的一天里 我一直在寻找使用 Angular 来控制带有子菜单的菜单列表的最佳方法 使用 jQuery 您可以在特定类型的元素 例如 li 并向其子元素添加一个类以打开菜单 我正在尝试做与此页面上的菜单相同的事情http geedmo
  • Postgres:将数据从一个数据库的公共模式移动到另一个数据库的新模式的最佳方式

    我是 Postgres 新手 刚刚发现我无法在一个 SQL 查询中访问不同数据库的数据 并且还学习了Postgres中模式的概念 现在 我有两个数据库 db1 和 db2 两者在其公共模式中都有相同名称的表 现在 我想在 db1 中创建一个
  • npgsql 和实体框架代码优先设置问题

    我最近收到的错误是 ERROR 42P01 relation dbo MigrationHistory does not exist 但我确信这只是因为之前的某些事情没有正确设置 我目前正在尝试首先设置实体框架 4 4 代码以使用 Npgs
  • 如何使用 SpringBootTest 测试某个方面?

    我使用 Spring Boot 2 1 6 RELEASE 在 Spring 中创建了一个简单的方面 它基本上记录了一个方法所花费的总时间 Aspect Component public class TimeLoggerAspect pri
  • JobLauncherTestUtils 在尝试测试 Spring Batch 步骤时抛出 NoUniqueBeanDefinitionException

    我正在使用 Spring boot 和 Spring Batch 我定义了不止一项工作 我正在尝试构建 junit 来测试作业中的特定任务 因此我使用 JobLauncherTestUtils 库 当我运行测试用例时 我总是得到 NoUni
  • Json 字符串数组转为 Java 字符串列表

    我有一个返回字符串列表的网络服务 仅返回字符串列表 string1 string2 string3 我怎样才能把它转换成ArrayList
  • Linux 容器上使用 screen -x 命令时出现“必须连接到终端错误”

    我正在使用带有 Proxmox 4 的 Linux 容器 当我连接到 Ubuntu 16 04 容器时 pct enter
  • Java 和 Python 一起出现在单个 Google App Engine 项目中

    我目前有一个在 Google App Engine 上运行的 Java 应用程序 但我想添加 Python 模块的 SearchableModel 提供的功能 当然是搜索功能 是否可以在与 Java 代码相同的项目中运行 python 代码
  • Pyinstaller.exe 未产生预期结果

    这是我第一次使用 pyinstaller 在 Windows 机器上构建 py 的 exe 我已成功生成 exe 但是当我运行代码时 它不会生成我的代码应生成的 csv 文件 附带说明一下 当我在 IDE 中运行脚本时 它成功生成了我期望的
  • OpenGL 渲染器不适用于冰淇淋三明治

    您好 我正在使用 OpenGL ES 1 0 构建 Android 游戏 一切都工作正常 直到我的 Transformer 平板电脑更新为冰淇淋三明治 现在 任何使用 OpenGL 渲染的内容都不会显示在屏幕上 我环顾四周 发现了Textu
  • 后期绑定与多态性 - 有什么区别?

    我见过两者互换使用 但它们真的意味着相同吗 根据我的理解 多态性延伸了这样一个事实 即您可以通过子类的实例交换类的实例 而后期绑定意味着当您调用实例的方法时 类型决定调用哪个方法 子类 超类 维基百科有一篇关于此的非常好的文章 http e
  • Ajax woocommerce 在弹出窗口中跟踪订单,无需重新加载页面

    我通过短代码将订单跟踪放在弹出窗口中 但问题是单击并发送请求后 页面将重新加载并且弹出窗口关闭 我希望通过 Ajax 在同一个弹出窗口中显示请求的结果 并且不重新加载页面 我搜索了整个网络 但找不到方法 如果有人知道如何做到这一点 请指导我
  • 在 Swift 中创建 UIView 的副本

    因为对象是引用类型 而不是值类型 如果您设置UIView等于另一个UIView 视图是同一对象 如果您修改其中一个 您也会修改另一个 我有一个有趣的情况 我想添加一个UIView作为另一个视图中的子视图 然后我进行一些修改 并且这些修改不应
  • c# 更改AD密码Directoryservices

    我试图让下面的代码工作 问题是 有时可以 有时不可以 当失败时 会出现错误 0x800704F1 系统无法联系域控制器来服务身份验证请求 我想说大约 90 的情况都会失败 我尝试通过将其添加到 contexttype 后面来给它一个静态 D