【发布时间】:2013-01-07 17:55:59
【问题描述】:
我正在编写一个小型 C# (.NET 4) 应用程序,该应用程序将在登录到 Windows Server 2012 时作为用户“Shell”的替代品运行。除此之外,我想为用户提供机会更改他们自己的本地帐户的密码。
使用下面的代码..
DirectoryEntry directory = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
DirectoryEntry userEntry = directory.Children.Find(username);
userEntry.Invoke("SetPassword", new object[] { newPassword });
userEntry.CommitChanges();
... 如果代码是从提升的命令提示符启动的,则可以正常工作。但是,由于 Shell 替换作为“普通”应用程序运行,我得到一个
访问被拒绝
代码运行时出现异常,即使用户设置为本地管理员。
是否有任何代码或机制可用于以编程方式设置用户自己的本地帐户密码而无需提升?或者(我知道这可能更像是一个 ServerFault 问题:)任何方式来运行“替换外壳”作为提升的进程而无需禁用 UAC?
【问题讨论】:
-
您的程序集中是否有请求管理员权限的清单?通过 UAC?
-
宾果游戏-我认为
s what Im 不见了。我现在至少被提示使用 UAC,我可以通过一些用户培训来“管理”它 :) 谢谢,请随时在下面重复你的答案以获得一些额外的点 :)