从 ASP.NET 站点创建 Windows 帐户并设置文件权限
Posted
技术标签:
【中文标题】从 ASP.NET 站点创建 Windows 帐户并设置文件权限【英文标题】:Create Windows accounts and set file permissions from ASP.NET site 【发布时间】:2011-07-07 00:36:02 【问题描述】:我正在构建一个 ASP.NET 应用程序,它将在服务器上创建 Windows 帐户和组,并为这些帐户设置文件/文件夹权限。
我该如何做到这一点?
我曾考虑过使用 CACLS.exe,但我有一种感觉,最终会让我陷入其他问题。 .NET 框架中还有其他选项吗?
【问题讨论】:
【参考方案1】:我实现类似目标的一种方式。这就是某些操作或进程需要管理权限的地方,而您尝试通过 ASP.NET 执行此操作的目的是构建 WCF 服务应用程序(理想情况下作为自托管服务)并使其以管理员身份运行。
然后从您的 ASP.NET 应用程序中调用服务中的方法并且它可以工作。
编辑
这是使控制台应用程序成为 WCF 自托管应用程序的代码
class Program
static void Main(string[] args)
var webServiceHhost = new WebServiceHost(typeof(AppCmdService), new Uri("http://localhost:7654"));
ServiceEndpoint ep = webServiceHhost.AddServiceEndpoint(typeof(AppCmdService), new WebHttpBinding(), "");
var serviceDebugBehavior = webServiceHhost.Description.Behaviors.Find<ServiceDebugBehavior>();
serviceDebugBehavior.HttpHelpPageEnabled = false;
webServiceHhost.Open();
Console.WriteLine("Service is running");
Console.WriteLine("Press enter to quit ");
Console.ReadLine();
webServiceHhost.Close();
上面代码清单中的类AppCmdService
是我的WCF服务类
【讨论】:
这是一个非常好的主意,我一定会接受的。但 CACLS 是我创建帐户和设置权限的唯一选择吗? @Jakob,恐怕我帮不了你。我已经多次使用过这种技术。最近使用 appcmd 执行一些操作,appcmd 是配置 IIS 的命令行工具,但它需要管理权限。这样做就像一种魅力。我已经编辑了我的答案以包含一些自托管 WCF 服务的示例代码【参考方案2】:看来我要找的是System.DirectoryServices.AccountManagement Namespace。我将把它很好地包装在 WCF 服务中(谢谢,Shiv Kumar)并从我的应用程序中调用它。
【讨论】:
以上是关于从 ASP.NET 站点创建 Windows 帐户并设置文件权限的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ASP.NET 页面获取当前登录的 Windows 帐户?
将Asp.Net WebAPI从AngularJS App的Asp.Net MVC站点移动到一个单独的站点