【问题标题】:Getting the printers on which I have rights to access获取我有权访问的打印机
【发布时间】:2012-02-28 10:22:26
【问题描述】:

我有一个服务器,当用户登录时,会执行一个登录脚本来加载用户有权使用的打印机。这是使用 GPO 完成的。所以当用户登录后,他可以看到他被允许使用的打印机。

我需要做的是在 C# 应用程序中加载这些打印机。我一直在尝试使用 (objectClass=groupPolicyContainer) 过滤器枚举组策略容器的属性,但我无法找到我(当前用户)可以访问的打印机。

【问题讨论】:

  • 看起来很不切实际。也许您可以找到打印机对象,但用户将如何找到打印机?
  • 实际上我可以使用活动目录获取打印机,但要确保只有那些我有权使用的打印机才能为我的用户获取有关打印机的 GPO 信息。

标签: c# active-directory group-policy gpo


【解决方案1】:

您可以为此使用 WMI,尤其是 WIN32_Printer 类:

using System.Management;

namespace WMIQuery
{
  class WmiQuery
  {
    static void Main(string[] args)
    {
      /* On the local computer loged as current user
       */
      ObjectQuery oQuery0 = new ObjectQuery(@"select * from Win32_printer where shared=true");
      ManagementObjectSearcher searcher0 = new ManagementObjectSearcher(oQuery0);

      foreach (ManagementObject queryObj in searcher0.Get())
      {
        Console.WriteLine(String.Format("--> {0} ({1})", queryObj["Name"], queryObj["ShareName"]));
      }
    }
  }
}

【讨论】:

  • 感谢您的回复。我有一种情况,我需要从活动目录中列出打印机,这些打印机也有权访问,而这段代码为我提供了已安装网络打印机的列表。
  • 对不起,但据我了解,GPO 内容不存储在 Active-Directory 中。只有引用存储在 AD 中,内容存储在服务器文件系统中,并且在登录时加载到注册表(或其他任何内容)中。
  • 那么我怎样才能获得有关允许打印机的注册表信息。
  • 有些东西我不明白。在您的环境中,用户如何知道是否允许安装已安装的网络打印机。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-01
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多