เริ่ม User32.dll หรือเกี่ยวกับ Kernel32.dll

ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ

ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:184802
อาการ
โปรแกรมประยุกต์ที่ดำเนินการ โดยCreateProcessหรือCreateProcessAsUserอาจล้มเหลว และคุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
การเตรียมใช้งานไลบรารีแบบไดนามิก<system>\system32\user32.dll ไม่ กระบวนการสิ้นสุดอย่างผิดปกติ </system>
การเตรียมใช้งานไลบรารีแบบไดนามิก<system>\system32\kernel32.dll ไม่ กระบวนการสิ้นสุดอย่างผิดปกติ </system>

นอกจากนี้ กระบวนการล้มเหลวส่งกลับรหัสจบการทำงาน 128 หรือข้อผิดพลาดต่อไปนี้:
ERROR_WAIT_NO_CHILDREN
สาเหตุ
ความล้มเหลวนี้เกิดขึ้นสำหรับหนึ่งในสาเหตุต่อไปนี้:
  • ขั้นตอนการดำเนินการไม่ได้เข้าถึงความปลอดภัยที่ถูกต้องไปยังสถานีหน้าต่างและเดสก์ท็อปที่เชื่อมโยงกับกระบวนการ
  • ระบบไม่เพียงพอเดสก์ท็อปฮีป
ข้อมูลเพิ่มเติม

สาเหตุที่ 1

ขั้นตอนการดำเนินการไม่ได้เข้าถึงความปลอดภัยที่ถูกต้องไปยังสถานีหน้าต่างและเดสก์ท็อปที่เชื่อมโยงกับกระบวนการ

สมาชิกของโครงสร้าง STARTUPINFO ที่ส่งผ่านไปCreateProcessหรือCreateProcessAsUser lpDesktop ระบุสถานีหน้าต่างและเดสก์ท็อปที่เชื่อมโยงกับขั้นตอนการดำเนินการ ขั้นตอนการดำเนินการต้องมีความปลอดภัยที่ถูกต้องในการเข้าถึงหน้าต่างระบุสถานีและเดสก์ท็อป

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการแก้ไขปัญหาความปลอดภัยสถานีหน้าต่างและคอมพิวเตอร์แบบตั้งโต๊ะ คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
165194 CreateProcessAsUser() windowstations และคอมพิวเตอร์แบบตั้งโต๊ะ

สาเหตุที่ 2

ระบบไม่เพียงพอเดสก์ท็อปฮีป

วัตถุทุกอันบนเดสก์ท็อปบนระบบมีเดสก์ท็อปฮีปที่เกี่ยวข้องด้วย วัตถุบนเดสก์ท็อปใช้ฮีปเพื่อจัดเก็บเมนู hooks สตริง และหน้าต่าง ใน Windows Server 2003 และ Windows XP 32 บิต ระบบจัดสรรเดสก์ท็อปฮีปจากบัฟเฟอร์ทั้งระบบ 48 เมกะไบต์ (MB) นอกเหนือจากเดสก์ท็อปบบแบบ โปรแกรมควบคุมเครื่องพิมพ์และโปรแกรมควบคุมแบบอักษรใช้บัฟเฟอร์นี้ได้ด้วย

คอมพิวเตอร์แบบตั้งโต๊ะจะเชื่อมโยงกับสถานีหน้าต่าง สถานีหน้าต่างสามารถประกอบด้วยอักขระ หรือไม่มีคอมพิวเตอร์แบบตั้งโต๊ะ คุณสามารถเปลี่ยนขนาดของเดสก์ท็อปฮีปที่ปันส่วนสำหรับการเดสก์ท็อปที่เชื่อมโยงกับสถานีหน้าต่าง ด้วยการเปลี่ยนแปลงค่ารีจิสทรีต่อไปนี้

หมายเหตุ เราไม่แนะนำให้ คุณใช้สวิตช์/3GB มีระบุสวิตช์/3GBในแฟ้ม Boot.ini สวิตช์/3GBจะได้รับการสนับสนุนสำหรับระบบปฏิบัติการ 32 บิตเท่านั้น
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows
ใน Windows Server 2003 และ Windows XP 32 บิต ข้อมูลเริ่มต้นสำหรับค่ารีจิสทรีนี้จะมีลักษณะดังต่อไปนี้ (ทั้งหมดบนหนึ่งบรรทัด):
   %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows   SharedSection=1024,3072,512 Windows=On SubSystemType=Windows   ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3   ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off   MaxRequestThreads=16				

ใน Windows รุ่นต่าง ๆ ข้อมูลเริ่มต้นสำหรับค่ารีจิสทรีนี้จะคล้ายกับต่อไปนี้:

สำหรับ Windows Vista rtm (32 บิต)
SharedSection=1024,3072,512

สำหรับ Windows Vista SP1, Windows 7, Windows 8, Windows 8.1 (32 บิต), และ Windows Server 2008 (32 บิต)
SharedSection=1024,12288,512

สำหรับ Windows Vista, Windows 7, Windows 8, 8.1 (64 บิต) ของ Windows, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 และ Windows Server 2012 R2 (64 บิต)
SharedSection=1024,20480,768

ตัวเลขค่าต่อไปนี้ " SharedSection =" ควบคุมวิธีการจัดสรรเดสก์ท็อปฮีป ค่าSharedSectionเหล่านี้มีระบุเป็นกิโลไบต์ มีการตั้งค่าแยกกันสำหรับเดสก์ท็อปที่เชื่อมโยงกับสถานีหน้าต่างโต้ตอบ และการโต้ตอบ

หมายเหตุ ถ้าคุณเปลี่ยนค่าในรีจิสทรีSharedSectionคุณต้องเริ่มต้นระบบสำหรับการเปลี่ยนแปลงมีผล

สิ่งสำคัญ ส่วน วิธีการ หรืองานนี้ประกอบด้วยขั้นตอนที่บอกให้คุณทราบวิธีการปรับเปลี่ยนรีจิสทรี อย่างไรก็ตาม ปัญหาร้ายแรงอาจเกิดขึ้นหากคุณปรับเปลี่ยนรีจิสทรีอย่างไม่ถูกต้อง ดังนั้นจึงให้ตรวจสอบจนแน่ใจว่าคุณทำตามขั้นตอนเหล่านี้อย่างระมัดระวัง สำหรับการปกป้องเพิ่มเติม ให้สำรองรีจิสทรีก่อนที่คุณทำการปรับเปลี่ยน จากนั้นคุณจะสามารถคืนค่ารีจิสทรีได้หากเกิดปัญหาขึ้น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสำรองข้อมูลและคืนค่ารีจิสทรี ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
322756 วิธีการสำรองข้อมูลและคืนค่ารีจิสทรีใน Windows

ค่าSharedSectionแรก (1024) คือ ขนาดที่ใช้ร่วมกันของฮีปทั่วไปเดสก์ท็อปทั้งหมด ซึ่งรวมถึงตารางการจัดการส่วนกลาง ตารางนี้มีจุดจับการ windows เมนู ไอคอน เคอร์เซอร์ และอื่น ๆ และการตั้งค่าระบบที่ใช้ร่วมกัน ไม่น่าว่า คุณจะสามารถเปลี่ยนค่านี้

ค่าSharedSectionสองคือ ขนาดของเดสก์ท็อปฮีปสำหรับแต่ละเดสก์ท็อปที่เชื่อมโยงกับสถานีหน้าต่าง "แบบโต้ตอบ" WinSta0 ผู้ใช้วัตถุเช่น hooks เมนู สตริง และ windows ใช้เนื้อที่หน่วยความจำในเดสก์ท็อปฮีปนี้ ไม่น่าว่า คุณจะสามารถเปลี่ยนค่านี้

แต่ละเดสก์ท็อปที่ถูกสร้างขึ้นในสถานีหน้าต่างโต้ตอบใช้เดสก์ท็อปฮีปเริ่มต้นของ 3,072 KB โดยค่าเริ่มต้น ระบบสร้างคอมพิวเตอร์แบบตั้งโต๊ะสามต่อไปนี้ใน Winsta0:
  • Winlogon
  • ค่าเริ่มต้น
    แอพลิเคชันเดสก์ท็อป "เริ่มต้น" จะถูกใช้ โดย theprocesses ทั้งหมดที่ระบุไว้ "Winsta0\default" ในโครงสร้างสมาชิกSTARTUPINFO.lpDesktop เมื่อโครงสร้างสมาชิก lpDesktop เป็น NULL สถานีหน้าต่างและเดสก์ท็อปที่ถูกสืบทอดมาจากกระบวนการหลัก บริการทั้งหมดที่ดำเนินการภายใต้บัญชี LocalSystem โดยใช้ตัวเลือกการเริ่มต้นการบริการอนุญาตให้มีการโต้ตอบกับเดสก์ท็อปที่เลือก จะใช้ "Winsta0\Default" ขั้นตอนทั้งหมดเหล่านี้จะใช้ร่วมกันเดสก์ท็อปฮีปที่เกี่ยวข้องกับแอพลิเคชันเดสก์ท็อป "เริ่มต้น"
  • โปรแกรมรักษาหน้าจอ
    โปรแกรมรักษาหน้าจอเดสก์ท็อปถูกสร้างขึ้นใน windowstation (WinSta0) การโต้ตอบเมื่อโปรแกรมรักษาหน้าจอที่ปรากฏขึ้น
ค่าSharedSectionที่สามคือ ขนาดของเดสก์ท็อปฮีปสำหรับแต่ละเดสก์ท็อปที่เชื่อมโยงกับสถานีหน้าต่าง "ไม่" ถ้าค่านี้ไม่มี ขนาดของเดสก์ท็อปฮีปสำหรับสถานีหน้าต่างโต้ตอบจะเหมือนกับขนาดที่ระบุไว้สำหรับสถานีหน้าต่างโต้ตอบ (นั่นคือ ค่าสองSharedSection )

ถ้าเพียงสองค่าSharedSectionที่มีอยู่ คุณสามารถเพิ่มค่าที่สามเพื่อระบุขนาดของเดสก์ท็อปฮีปสำหรับเดสก์ท็อปที่ถูกสร้างในหน้าต่างโต้ตอบสถานี

ทุก ๆ กระบวนการบริการที่จะดำเนินการภายใต้บัญชีผู้ใช้จะได้รับให้เดสก์ท็อปใหม่ในสถานีหน้าต่างโต้ตอบที่สร้างโดยตัวจัดการควบคุมบริการ (SCM) ดังนั้น แต่ละบริการที่จะดำเนินการภายใต้บัญชีผู้ใช้จะใช้จำนวนกิโลไบต์ของเดสก์ท็อปฮีปที่ระบุในค่าSharedSectionที่สาม บริการทั้งหมดที่ดำเนินการภายใต้บัญชี LocalSystem เมื่ออนุญาตให้บริการเพื่อโต้ตอบกับเดสก์ท็อปคือ เดสก์ท็อปฮีปของเดสก์ท็อป "เริ่มต้น" อุปกรณ์ windows บริการการโต้ตอบ (บริการ 0x0 3e7$) การเลือกใช้ร่วมกันไม่

เดสก์ท็อปฮีปจุดรวมที่ใช้ในสถานีหน้าต่างโต้ตอบ และการโต้ตอบต้องการให้พอดีในบัฟเฟอร์

ลดค่าSharedSectionที่สอง หรือสามจะเป็นเพิ่มจำนวนของเดสก์ท็อปที่สามารถถูกสร้างในหน้าต่างสถานีต่าง ๆ ที่สอดคล้องกัน ค่ามีขนาดเล็กจะจำกัดจำนวน hooks เมนู สตริ และ windows ซึ่งสามารถสร้างในเดสก์ท็อป คง การเพิ่มค่าSharedSectionที่สอง หรือสามจะลดจำนวนของเดสก์ท็อปที่สามารถสร้าง อย่างไรก็ตาม นี้ยังจะเพิ่มจำนวน hooks เมนู สตริ และ windows ซึ่งสามารถสร้างในเดสก์ท็อป

เนื่องจาก SCM สร้างเดสก์ท็อปใหม่หน้าต่างโต้ตอบอุปกรณ์สำหรับทุก ๆ กระบวนการบริการที่กำลังทำงานภายใต้บัญชีผู้ใช้ ค่าSharedSectionที่สามมีขนาดใหญ่จะลดจำนวนของบริการบัญชีผู้ใช้ที่สามารถรันบนระบบเรียบร้อยแล้ว ต่ำสุดที่คุณสามารถระบุค่าSharedSectionที่สอง หรือสาม คือ 128 ความพยายามใด ๆ เพื่อใช้เป็น willinstead ค่ามีขนาดเล็กกว่าใช้ 128

เดสก์ท็อปฮีปถูกปันส่วน โดย User32.dll เมื่อวัตถุผู้ใช้ที่จำเป็นต้องมีกระบวนการ ถ้าโปรแกรมประยุกต์ไม่ได้ขึ้นอยู่กับ User32.dll นั้นจะไม่ใช้เดสก์ท็อปฮีป

หมายเหตุ ใน Windows Server 2003 การระบุเหตุการณ์ถูกบันทึกไว้ในบันทึกของระบบเมื่อมีเงื่อนไขใด ๆ ต่อไปนี้เป็นจริง:
  • ถ้าเดสก์ท็อปฮีปเต็ม ถูกบันทึกเหตุการณ์ต่อไปนี้:

    ชนิดเหตุการณ์: คำเตือน
    แหล่งของเหตุการณ์: Win32k
    ประเภทเหตุการณ์: ไม่มี
    รหัสเหตุการณ์: 243
    วันที่: วันที่
    เวลา: เวลา
    ผู้ใช้: N/A
    คอมพิวเตอร์: ชื่อเซิร์ฟเวอร์
    คำอธิบาย: เดสก์ท็อปฮีปล้มเหลว

    ในกรณีนี้ เพิ่มขนาดเดสก์ท็อปฮีป
  • ถ้า ขนาดของบัฟเฟอร์ทั้งระบบเดสก์ท็อปฮีปรวม ถูกบันทึกเหตุการณ์ต่อไปนี้:

    ชนิดเหตุการณ์: คำเตือน
    แหล่งของเหตุการณ์: Win32k
    ประเภทเหตุการณ์: ไม่มี
    รหัสเหตุการณ์: 244
    วันที่: วันที่
    เวลา: เวลา
    ผู้ใช้: N/A
    คอมพิวเตอร์: ชื่อเซิร์ฟเวอร์
    คำอธิบาย: การสร้างเดสก์ท็อปเนื่องจากจุดเดสก์ท็อปฮีปล้มเหลว

    ในกรณีนี้ ลดขนาดเดสก์ท็อปฮีปอีกด้วย
ใน Windows Server 2003 บัฟเฟอร์ทั้งระบบคือ 20 MB เมื่อมีเงื่อนไขใด ๆ ต่อไปนี้เป็นจริง:
  • คุณอยู่ในสภาพแวดล้อมบริการเทอร์มินัล
  • มีระบุสวิตช์/3GBในแฟ้ม Boot.ini

คำเตือน: บทความนี้ได้รับการแปลโดยอัตโนมัติ

คุณสมบัติ

รหัสบทความ: 184802 - การตรวจสอบครั้งสุดท้าย: 06/13/2015 08:19:00 - ฉบับแก้ไข: 6.0

Microsoft Win32 Application Programming Interface

  • kbdll kbkernbase kbprb kbsecurity kbmt KB184802 KbMtth
คำติชม