我有一個使用舊報告庫(ReportPro)的應用程序。在Windows 7 64上,它有時無法找到默認打印機。我做了一些挖掘,發現Windows註冊表中的問題。 ReportPro通過GetProfileString窗口API確定可用的打印機。它變得可用打印機的列表,從這裏開始:未檢測到Windows 7默認打印機
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices
它從這裏默認打印機:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device
我所看到的在Windows註冊表中的打印機將顯示在列表中名稱和網絡端口,我們使用的是:
HP LaserJet 5200 Series PCL 5 on Ne03:
Microsoft XPS Document Writer on Ne01:
HP Officejet Pro K8600 Series on Ne02:
Phaser 8860-2 PS on Ne00:
CutePDF Writer on CPW2:
在某些系統默認打印機字符串的值是不同的。這將是這樣的:
的HP LaserJet 5200系列PCL 5 Ne01:
特別是相對於打印機列表中NEXX號碼是默認打印機值不同。
報告包無法找到默認打印機,因爲它在比較中使用打印機名稱和NExx編號。
爲什麼NExx值會不同,我如何確保值「粘」?我目前找到的解決方案是將其他打印機設置爲默認打印機,然後選擇正確的默認打印機。這似乎暫時解決了這個問題,但這不是永久性的。
這個問題似乎只是Win7。在過去的8年中,有幾款XP機器從未遇到過這個問題。
在註冊表中看到第一個定義的打印機是用戶默認的。您也可以使用同一個密鑰的「UserSelectedDefault」註冊表值中的整數值進行驗證。 – LaKraven
Microsoft在此處命名爲「Nexx:」:[link] http://technet.microsoft.com/en-us/library/cc775625(v = ws.10).aspx *當打印機是本地打印機,port是它所連接的端口的名稱;例如,LPT1。否則,端口爲Nexx,其中xx爲數值,以00開頭。後一種格式用於通過網絡訪問的打印機,端口以\\開頭的本地打印機,端口名稱中有空格時它,並且當端口的名稱長度大於五時。* –
不能保證第一臺定義的打印機是默認打印機。我已經看過幾種不同的機器,它有很大的不同。 – Hugh