从 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 站点访问智能卡?

将Asp.Net WebAPI从AngularJS App的Asp.Net MVC站点移动到一个单独的站点

在 Asp.Net Core 2.1 中找不到帐户页面

如何在 asp.net 4.5 中使用 facebook 帐户开发登录

使用 asp.net 中的会话从帐户注销时遇到问题