Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从打印服务器C#从网站安装本地打印机_C#_Asp.net - Fatal编程技术网

从打印服务器C#从网站安装本地打印机

从打印服务器C#从网站安装本地打印机,c#,asp.net,C#,Asp.net,如果我转到资源管理器,导航到我们的打印服务器并单击打印机名称,它会在本地安装打印驱动程序\printserver\printername 我创建了一个powershell脚本并对其进行了测试,结果很好。然后我用c#创建了一个库来执行ps脚本 我的最终目标是允许任何经过身份验证的用户能够从网站将我们的任何网络打印机安装到他们的工作站上。我尝试了多种方法来运行此代码。安装打印机的代码在windows应用程序下运行良好 下面是我在web应用程序中尝试的内容 Web.Config-Web配置中的模拟

如果我转到资源管理器,导航到我们的打印服务器并单击打印机名称,它会在本地安装打印驱动程序\printserver\printername

我创建了一个powershell脚本并对其进行了测试,结果很好。然后我用c#创建了一个库来执行ps脚本

我的最终目标是允许任何经过身份验证的用户能够从网站将我们的任何网络打印机安装到他们的工作站上。我尝试了多种方法来运行此代码。安装打印机的代码在windows应用程序下运行良好

下面是我在web应用程序中尝试的内容

  • Web.Config-Web配置中的模拟

      <authentication mode="Windows"></authentication>
      <authorization>
             <allow users="*"/>
             <deny users="?"/>
      </authorization>
      <identity impersonate="true" userName="someuser" password="pwofthatuser"/>
    
  • 问题:

  • 如果我的登录用户工作,我假设如果我用我的凭据模拟网站,它也应该工作,这个假设是真的吗

  • 如何验证代码在哪个用户下执行?它似乎遇到了访问被拒绝的错误


  • 在此方面的任何帮助都将不胜感激。如果有人已经解决了这个问题,那么解决方案也会很好。

    你要问的是Windows本身已经做了什么。打印机由域服务器集中提供服务。已经可以通过组策略指定本地打印机。用户只需使用配置好的打印机即可。我已经了解这一点。但我们在工作中有一个需求,即能够实现此功能以简化流程。你是说我想做的是不可能的吗?我是说已经做了。它比仅仅打开Windows资源管理器并选择打印机要容易得多?组策略可以应用于每个业务单元、用户组等,因此人们可以在办公室中获得打印机。一旦完成,您就可以使用它。您可以自己搜索打印机及其驱动程序的广告,查找用户的OU,查找其中的任何打印机等。您不需要(至少不必)控制驱动程序安装,它将在安装打印机时安装。这就引出了一个问题,您希望如何添加打印机?例如,您可以使用Powershell远程处理来立即执行针对用户计算机的操作。或者您可以修改组策略,尽管这需要一点时间才能进入所有机器
     System.Security.Principal.WindowsImpersonationContext impersonationContext;
     impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
    
     --- Code Here --
    
     impersonationContext.Close();