RSS

Printer Spooler service & splwow64.exe problem in my Windows 7 64-bit

03 May

ปัญหาหนึ่งที่ผมเจออยู่ปัจจุบันนี้ และแก้ไม่ตกคือ ปัญหาการค้างของ Printer Spooler และ process ที่เกี่ยวข้อง โดยเวลาสั่ง print อะไรมันจะ pop up ข้อความ error ว่า “An unknown error occurred while printing” คือ ปัญหานี้จะเจอค่อนข้างบ่อยเมื่อ wake-up เครื่องจากการ standby ไม่สามารถบอกได้ว่าเกิดจากอะไร และจะเกิดเมื่อไร แต่ผมพบปัญหานี้บ่อยจนน่ารำคาญมาก เปิดปิดโปรแกรม แล้วสั่ง print ใหม่ ปัญหาก็ไม่หาย

ผมนั่งๆขุดๆดูพบว่าใน Win 7 มันเหมือนจะมี component อยู่ 2 ตัวที่จัดการเกี่ยวกับ printer นั่นคือ service ที่มีชื่อว่า Printer Spooler (มันก็มีมาตั้งแต่ไหนแต่ไรแล้วอ่ะนะ) ส่วนอีกตัวคือ process ที่ชื่อว่า “splwow64.exe” เข้าใจว่า ตัว PS เนี่ยเป็นตัว Spooler รับคำสั่งพิมพ์จากทุกโปรแกรมแล้วส่งต่อให้ printer แต่ส่วน splwow64 จาก description มันบอกว่าเป็นตัว handle คำสั่งพิมพ์จากโปรแกรมที่เป็น 32 bit ผมไม่รู้ว่าใน Win 7-32 bit มันจะมี process นี้อยู่ด้วยไหม

วิธีแก้ปัญหาแบบเฉพาะหน้า

  1. สั่ง End Task process “splwow64.exe”
  2. Run > “services.msc” > “Printer Spooler” > สั่ง Stop service > Start service
  3. Run > run “splwow64.exe”
  4. ปิด แล้ว เปิด โปรแกรมที่ต้องการสั่งพิมพ์ เช่น ถ้ากำลังจะ print จาก Word ก็ปิดแล้วเปิดโปรแกรมใหม่ แต่ถ้าเป็น Firefox ก็คงเอือมนิดหน่อย เพราะ ถ้ามันเป็นหน้าใบเสร็จ หรือ เอกสารที่เปิดมาให้พิมพ์ได้แค่ครั้งเดียว อันนั้นก็คงอาจจะต้อง capture screen ไป print ที่โปรแกรมอื่นแล้วล่ะ

ถ้าใครมีรู้วิธีแก้ หรือ มีวิธีอื่น บอกด้วยแล้วกันจักเป็นพระคุณยิ่ง

==========================================================================

Update: July 10, 2011

[Additional] Windows Printer Spooler Related Problem #1:

HP Laserjet 1022 driver causes Printer Spooler service crashed frequently.

อาทิตย์ก่อนไปแก้ปัญหาไอ้ตัว Windows Spooler จอมปัญหาอีกครั้ง แต่ครั้งนี้หนักกว่าที่เจอบน laptop ผม เพราะทุกครั้งที่มีการเรียกใช้งาน Spooler service เช่น แค่กด Ctrl+P เพื่อจะสั่ง print ตัว Spooler จะตายทุกครั้ง

ด้วยความอยากรู้ว่าอะไรมันเป็นสาเหตุของปัญหาก็เลยไปเปิด Event Log ดูพบว่า Error เตือนเป็น 30 กว่าครั้งเลยว่า service “Windows Spooler Service” ตายเนื่องจาก ZSR.dll เป็นตัวก่อปัญหา เลยขุดต่อว่าไอ้ตัวนี้เป็น dll ของอะไรกันแน่ จากตัว description มันเขียนว่าเป็น dll ขอ SuperPrint, SuperRip ซึ่งพัฒนาโดยบริษัท Zenographic

เลยทดลอง rename ตัว ZSR.dll ซึ่งอยู่ที่ C:\Windows\system32\spool\DRIVERS\x64\3\ZSR.dll แล้ว rename เป็น _ZSR.dll แล้วลอง start service ใหม่ ปรากฏว่าคราวนี้ไม่ตายแล้วแหะ สามารถ print ด้วย device อื่น เช่น Adobe PDF, CutePDF และตัวอื่นๆได้หมดไม่มีปัญหา

พอลอง searchๆ ดูก็พบว่าปัญหานี้เป็นปัญหายอดฮิตมาตั้งแต่สมัย Windows XP แล้ว ไม่ใช่เพิ่งมาเป็นจากตัวปัญหาของ Spooler ใน Win7

Solution:

1. ถ้าเป็น WinXP ให้เปลี่ยนไปใช้ driver ของ HP Laserjet 6L แทน ซึ่งใช้งานมีปัญหา

2. ถ้าเป็น Win 7 ขอแสดงความเสียใจที่ว่ามันไม่มีตัว driver ของ 6L ติดมากับตัว Windows และตอนนี้ผมยังไม่เจอ solution ที่แก้ปัญหาจริงๆ ผมลองพยายามเลี่ยงไปใช้ ตัว HP Universal Printer Driver ทั้ง PCL 5 และ PCL 6 แล้วพบว่ามันไม่ compatible กับ HP 1022 พอพิมพ์มาแล้วก็เละตุ้มเป๊ะ สรุปคือ ลองลบตัว Printer ทิ้งแล้ว re-install ตัว driver ใหม่ พบว่ามัน work อ่ะนะ แต่ก็บอกเจ้าของเครื่องไปว่า ตอนนี้มัน work ก็จริง แต่ อนาคตมันอาจจะเกิดปัญหาได้อีก

สิ่งหนึ่งที่ทำให้มั่นใจเพราะหลังจาก re-install ตัว driver ที่ download จากเวบ HP มา มันมี ZSR.dll กลับมาเหมือนเดิม ทั้งๆที่ก็ยังมี _ZSR.dll อยู่ในนั้นอ่ะนะ

สรุป case นี้ปิดไปอย่าง unsolved

Case Brief:  ZSR.dll + Windows Spooler Service (“spoolsvc.exe” / Windows 7-64 bit)

Advertisements
 
Leave a comment

Posted by on May 3, 2011 in Computer

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: