2009-12-10 62 views
1

幾年前,另一個聰明的程序員建立了一個VB.NET服務來打印服務器安裝的打印機。作業查詢數據庫表以查看它是否有任何打印請求,它們指定要打印的文件以及要將其發送到的打印機的名稱。該作業構造了一個3部分的命令行咒語並執行它;它會有點像這樣:Old-School Windows 2000打印,或何時是端口名稱計算機?

net use LPT2: IP_1.2.3.4 /user:domain\userid password >> netuse1.out 
copy someExistingFile.pdf LPT2 >> copy.out 
net use LPT2: /delete >> netuse2.out 

我們被要求做這個工作無關的其他變化,並愉快地遵守。只有我們部署和運行的任何版本的作業都不會打印。第一條語句失敗,出現「發生系統錯誤67,無法找到網絡名稱」。

作業查詢了註冊表以查找用戶指定的打印機的端口名稱。它嘗試的端口確實是我們在查看打印機屬性時看到的端口「名稱」。那就是,呃,是正確的。

除了...等一下,到底什麼是「端口名稱」?它不是一個有效的IP地址(儘管它是打印機本身的IP地址,前綴爲「IP_」。我在NET USE上找不到任何有關打印機端口,只有計算機/共享[和可選卷]的信息。

任何人都可以擺脫任何光線是否這會工作過?

[當然,沒有人能爲我們提供的源動力,實際上仍然有效的服務的版本,我們已經沒有碰過這部分服務,只是在這個打印之前,而客戶發誓他們沒有。Grrr ...]

我們正在尋找一種更現代化的打印方式,儘管它需要運行作爲一項服務而複雜化測試的東西。

回答

1

「IP_1.2.3.4」參數是打印機共享名稱,而不是端口名稱。您必須共享某個現有的已安裝打印機,並在過去的某個時間給它命名爲「IP_1.2.3.4」,並且此共享名稱已丟失。

如果您只需要一臺直通式打印機,您可以安裝「通用/純文本」打印機,將其分配給所需的端口,然後在「net use」命令中使用該名稱共享它。

+0

這聽起來不錯,雖然我沒有辦法驗證。 –

相關問題