如何以编程方式在 Windows 7 或 Windows Server 2008 上创建 Windows 用户帐户?

2023-11-22

我一直在尝试在 Windows 7 计算机上创建新的本地用户帐户。我使用了 System.DirectoryServices.DirectoryEntry 类(如here)但它似乎不起作用。

这是文章中的代码:

static void Main(string[] args)
{
try
    {
 DirectoryEntry AD = new DirectoryEntry("WinNT://" + 
                     Environment.MachineName + ",computer");
 DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");
 NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
 NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
 NewUser.CommitChanges();
 DirectoryEntry grp;

 grp = AD.Children.Find("Guests", "group");
 if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}
 Console.WriteLine("Account Created Successfully");
 Console.ReadLine();
}
catch (Exception ex)
{
 Console.WriteLine(ex.Message);
 Console.ReadLine();

}
}

当执行这一行时

DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");

I get a

System.Runtime.InteropServices.COMException with "{"Unknown error (0x80005000)"}"

作为异常消息,并且-2147463168作为错误代码。

我认为这可能是因为本文针对的是 Windows XP 及更低版本的计算机,而我的目标是 Windows 7 和 Windows Server 2008。

任何帮助表示赞赏!

Update:
由于某种神秘的原因,我不再看到它System.Runtime.InteropServices.COMException但是,在此处提交更改时newuser.CommitChanges(),我得到一个“UnAuthorizedAccessException“。我尝试以管理员身份运行该应用程序,但仍然无法正常工作。

更新2:
好的,更改为 UserPrincipal 类后,我得到了以下代码:

public UserPrincipal CreateNewUser(string sUserName, string sPassword)
        {
            // first check that the user doesn't exist
            if (GetUser(sUserName) == null)
            {
                PrincipalContext oPrincipalContext = GetPrincipalContext();

                UserPrincipal oUserPrincipal = new UserPrincipal(oPrincipalContext);
                oUserPrincipal.Name = sUserName;
                oUserPrincipal.SetPassword(sPassword);
                //User Log on Name
                //oUserPrincipal.UserPrincipalName = sUserName;
                oUserPrincipal.Save();

                return oUserPrincipal;
            }

            // if it already exists, return the old user
            return GetUser(sUserName);
        }
    }


当我将其作为控制台应用程序运行时(当然以管理员身份运行),此代码运行良好,但是当我将其部署为 Windows 服务并将安全帐户设置为“LocalSystem”时,我得到一个InvlaidOperationException说“底层商店不支持此属性”

想法?


好的,如果你检查我的最新更新,以下代码片段有效:

public UserPrincipal CreateNewUser(string sUserName, string sPassword)
        {
            // first check that the user doesn't exist
            if (GetUser(sUserName) == null)
            {
                PrincipalContext oPrincipalContext = GetPrincipalContext();

                UserPrincipal oUserPrincipal = new UserPrincipal(oPrincipalContext);
                oUserPrincipal.Name = sUserName;
                oUserPrincipal.SetPassword(sPassword);
                //User Log on Name
                //oUserPrincipal.UserPrincipalName = sUserName;
                oUserPrincipal.Save();

                return oUserPrincipal;
            }

            // if it already exists, return the old user
            return GetUser(sUserName);
        }
    }

它作为控制台应用程序运行,但在部署为 Windows 服务时由于安全异常而无法执行。解决方案是信任该程序集(Windows 服务程序集),以便 .net 安全性允许其运行。完成了,现在一切都很酷了!

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

如何以编程方式在 Windows 7 或 Windows Server 2008 上创建 Windows 用户帐户? 的相关文章

  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 如何定义一个可结构化绑定的对象的概念?

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

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • WCF客户端代理初始化

    我正在使用 WCF 服务并使用 VS 2008 服务引用创建其代理 我正在寻找调用 WCF 服务方法的最佳模式 我是否应该在每次调用服务方法时创建客户端代理实例并在完成后立即关闭客户端 当我分析我的客户端应用程序时 我可以看到在初始化代理客
  • Google SDTT 中的错误:“为 url 提供的所有值必须指向同一页面。”

    我正在尝试为 ecom 网站上的产品列表创建一些 JSON LD 结构化数据 但在使用 Google 的结构化数据测试工具时遇到错误 到目前为止 我有这个 context http schema org type OfferCatalog
  • NSXML解析器错误域 111

    下面的代码打印以下消息 Error Domain NSXMLParserErrorDomain Code 111 The operation couldn t be completed NSXMLParserErrorDomain erro
  • 如何向变成 iBeacon 的 iPhone 发送数据?

    如何将数据发送到充当 iBeacon 的 iPhone 我正在寻找如下流程 搜索附近的 iBeacons 连接到一些 iBeacon 在设备之间交换数据 有谁知道如何将不同的蓝牙功能组合在一起 这可能吗 提前谢谢 标准iBeacons 是仅
  • 更新flutter后启动黑屏

    我最近更新了颤振 为了运行 flutter 项目 我通过 USB 使用 android 更新后 每个项目在启动时都会显示黑屏 以前的版本运行良好 我尝试更改启动画面 drawable launch background xml 在andro
  • 如何检查 uiimage 是否为空? (空、透明)

    这是检查是否存在的最佳方法UIImage是空白的 我有这个绘画编辑器 它返回一个UIImage 如果这张图片上没有任何内容 我不想保存它 试试这个代码 BOOL isImageFlag self checkIfImage image 和 c
  • 可以阻止 Enter 仅从某些输入字段在 JavaScript 中提交表单 [重复]

    这个问题在这里已经有答案了 我有一个表格onkeyup触发为某些字段创建建议框 我能够捕获向上箭头 向下箭头和转义的击键 并相应地使用它们在建议框中移动或关闭它 我想使用 Enter 将他们的选择移动到触发建议的输入字段中 但是 我似乎无法
  • 为什么价值观不同? C++ 指针

    我正在谷歌搜索一个解决方案来找出 C 中数组的长度 我发现的解决方案之一是这样的 int arr 1 2 3 4 5 6 int size arr 1 arr size is the length of the array 我很困惑 arr
  • 使用 Fluent API 的 EF 外键

    这是我的模型 我有车辆和驾驶员的一对一映射 我将首先创建车辆 然后将驾驶员映射到车辆 public class Driver public int Id get set public String Name get set public i
  • common-js utils 中的 JSON 模式验证是否支持引用?

    common js utils 中的 JSON 模式验证是否支持引用 我不能这样做https github com kriszyp commonjs utils blob master json schema js 我尝试了以下代码 typ
  • didUpdatePushCredentials 没有被调用

    我想在我的 iOS 应用程序中实现 VoIP 通知 但是didUpdatePushCredentials方法从未被调用 我无法获取设备令牌 我在应用程序中实现了 APNS 这两个服务可能会冲突吗 这是我的 AppDelegate 代码 vo
  • 设置应用默认支付服务

    让我们考虑一下用户安装了多个支持 NFC HCE 支付的应用程序的情况 这些应用程序服务在设置 NFC Tap and Pay 下可见 如果不是 如何以编程方式将您的应用程序更改为默认支付服务 CardEmulation似乎只有 API 可
  • 如何修复类型“string”不可分配给类型“T[keyof T]”

    给定以下 Typescript 函数 const setter
  • 如何在 Swift 中取消本地通知触发器

    我有一个触发器向用户显示通知 let content UNMutableNotificationContent content title Title content body Body content sound UNNotificati
  • 在 Android 版本 42 或更高版本的 Firefox 中安装未签名的 XPI

    我正在尝试重新开发一个旧项目 即我正在开发的 Android 版 Firefox 扩展 我有两部手机 一部是私人的 一部是工作的 我的 Firefox 是旧版本 40 它的工作原理与以前完全相同 但是 在我工作的手机的升级版本 Firefo
  • Qt 不加载 JPG ,仅加载 PNG

    我与同事在 Windows 7 64 位版本 Visual Studio 2008 上处理同一个项目 他们加载 JPG 并开始工作 通过 QPixmap 和样式表 并且有效 但对我来说 我只能使用 PNG 其余的根本不起作用 我还尝试更改环
  • Cocoa TextView 中的语法突出显示?经验?建议?有想法吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Cocoa 应用程序的语法着色 我对 感兴趣语法高亮 in a Cocoa文本视图 我找到了几个资源 灵活接近 via a flex模式匹配textStorageDidProcessEditing i
  • Ruby 数组初始化 [重复]

    这个问题在这里已经有答案了 我需要知道这两个语句之间的技术差异以及为什么它会这样 arr Array new 3 abc gt abc abc abc arr last upcase gt ABC arr gt ABC ABC ABC wh
  • 如何永久忽略 ActiveRecord::Base 类中的数据库列?

    我有一个遗留数据库 我正在尝试使用 Rails 对其进行建模 其中一个表有一列名为attributes 我认为这是 Rails 保留的名称 下面是该表的 SQL CREATE TABLE album id int 11 NOT NULL a
  • 如何以编程方式在 Windows 7 或 Windows Server 2008 上创建 Windows 用户帐户?

    我一直在尝试在 Windows 7 计算机上创建新的本地用户帐户 我使用了 System DirectoryServices DirectoryEntry 类 如here 但它似乎不起作用 这是文章中的代码 static void Main