【发布时间】:2017-04-18 15:31:40
【问题描述】:
根据我的阅读,出于安全原因,使用现代浏览器无法找到客户端本地打印机。我有一些条件可能会使答案有所不同。
- 我正在尝试从公司网络中获取客户的本地打印机。所以这不是在“外部”发布的
- 我想几年前微软发布了一个可以从客户端浏览器运行的小版本.Net。如果是这样并且它仍然存在,我想知道这是否可以检查客户的本地打印机。
谢谢
【问题讨论】:
根据我的阅读,出于安全原因,使用现代浏览器无法找到客户端本地打印机。我有一些条件可能会使答案有所不同。
谢谢
【问题讨论】:
呈现检索客户端打印机的一种方法是在具有相同访问权限的同一网络中运行服务器端应用程序。 Silverlight 或许可以做到。不幸的是,我没有经验。
【讨论】:
这最终导致工作量很大,信息很少,因为我在 Internet 上搜索的几乎所有解决方案都假设我们希望从浏览器中获取客户端的打印机。我们想通过网络找到这样的信息。
解决方案最终是使用 DirectorySearch 等。这是删除了一些隐私内容的代码。它处于 POF 状态,所以它可能有一些不太好的语法
Dim list As New List(Of String)
Dim listtemp As New List(Of String)
Dim resultCollection As SearchResultCollection
Dim computer_name As String = System.Net.Dns.GetHostEntry(Request.ServerVariables("remote_addr")).HostName.Replace(".ourcompany.com", "").ToLower 'clients machine name
Dim dirEntry As New DirectoryEntry("LDAP://DC=OURCOMPANY, DC=com")
Dim dirSearcher As New DirectorySearcher(dirEntry)
dirSearcher.Filter = "objectCategory=printQueue"
dirSearcher.PropertyNamesOnly = True
dirSearcher.PropertiesToLoad.Add("Name")
dirSearcher.SearchScope = SearchScope.Subtree
resultCollection = dirSearcher.FindAll()
For Each sresult As SearchResult In resultCollection
If sresult.GetDirectoryEntry.Name.ToLower.Contains(computer_name) Then
list.Add(sresult.GetDirectoryEntry.Name.ToLower.Substring(3).Replace(computer_name + "-", ""))
End If
Next
【讨论】: