User32.dll veya Kernel32.dll başlatılmıyor

Bu makalede, tarafından CreateProcess yürütülen veya CreateProcessAsUser başarısız olabilecek bir uygulamanın sorunu açıklanmaktadır.

Şunlar için geçerlidir: Microsoft Windows
Özgün KB numarası: 184802

Belirtiler

tarafından CreateProcess yürütülen veya CreateProcessAsUser başarısız olabilecek bir uygulamadır ve aşağıdaki hata iletilerinden birini alırsınız:

Dinamik kitaplık <sistemi>\system32\user32.dll başlatılamadı. İşlem anormal şekilde sonlandırılıyor. Dinamik kitaplık <sistemi>\system32\kernel32.dll başlatılamadı. İşlem anormal şekilde sonlandırılıyor.

Ayrıca, başarısız olan işlem 128 çıkış kodunu veya aşağıdakileri döndürür:

error:ERROR_WAIT_NO_CHILDREN

Neden

Bu hata aşağıdaki nedenlerden biri nedeniyle oluşur:

  • Yürütülen işlem, işlemle ilişkili pencere istasyonuna ve masaüstüne doğru güvenlik erişimine sahip değil.

  • Sistem masaüstü yığını tükendi.

Daha fazla bilgi

  • Neden 1

    Yürütülen işlem, işlemle ilişkili pencere istasyonuna ve masaüstüne doğru güvenlik erişimine sahip değil.

    Yürütülen işlemle ilişkili pencere istasyonu ve masaüstüne CreateProcess geçirilen veya CreateProcessAsUser belirtilen STARTUPINFO yapısının lpDesktop üyesi. Yürütülen işlemin belirtilen pencere istasyonuna ve masaüstüne doğru güvenlik erişimi olmalıdır.

  • Neden 2

    Sistem masaüstü yığını tükendi.

    Sistemdeki her masaüstü nesnesinin kendisiyle ilişkilendirilmiş bir masaüstü yığını vardır. Masaüstü nesnesi menüleri, kancaları, dizeleri ve pencereleri depolamak için yığını kullanır. Windows Server 2003 ve Windows XP 32 bit'te sistem, sistem genelindeki 48 megabayt (MB) arabellekten masaüstü yığını ayırır. Masaüstü yığınlarına ek olarak, yazıcı sürücüleri ve yazı tipi sürücüleri de bu arabelleği kullanır.

    Masaüstleri pencere istasyonlarıyla ilişkilendirilir. Pencere istasyonu sıfır veya daha fazla masaüstü içerebilir. Aşağıdaki kayıt defteri değerini değiştirerek, pencere istasyonuyla ilişkili bir masaüstü için ayrılan masaüstü yığınının boyutunu değiştirebilirsiniz.

    Not

    /3 GB anahtarını kullanmanızı önermeyiz. /3GB anahtarı Boot.ini dosyasında belirtilir. /3GB anahtarı yalnızca 32 bit işletim sistemleri için desteklenir. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows

Windows Server 2003 ve Windows XP 32 bit'te, bu kayıt defteri değeri için varsayılan veriler aşağıdakine benzer (tümü bir satırda):

%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'un farklı sürümlerinde, bu kayıt defteri değerinin varsayılan verileri aşağıdakine benzer:

  • Windows Vista RTM için (32 bit)

    SharedSection=1024,3072,512
    
  • Windows Vista SP1, Windows 7, Windows 8, Windows 8.1 (32 bit) ve Windows Server 2008 (32 bit) için

    SharedSection=1024,12288,512
    
  • Windows Vista, Windows 7, Windows 8, Windows 8.1 (64 bit), Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 ve Windows Server 2012 R2 (64 bit) için

    SharedSection=1024,20480,768
    

Aşağıdaki SharedSection= sayısal değerler, masaüstü yığınının nasıl ayrılacağını denetler. Bu SharedSection değerler kilobayt cinsinden belirtilir. Etkileşimli ve etkileşimsiz pencere istasyonlarıyla ilişkili masaüstleri için ayrı ayarlar vardır.

Not

Kayıt defterindeki SharedSection değerleri değiştirirseniz, değişikliklerin etkili olması için sistemi yeniden başlatmanız gerekir.

Önemli

Bu bölüm, yöntem veya görev, kayıt defterini nasıl değiştireceğinizin anlatıldığı adımları içermektedir. Ancak kayıt defterini hatalı biçimde değiştirirseniz önemli sorunlar oluşabilir. Bu nedenle bu adımları dikkatle uyguladığınızdan emin olun. Ek koruma için kayıt defterini değiştirmeden önce yedeklemeyi unutmayın. Böylece, bir sorun oluşursa kayıt defterini daha sonra geri yükleyebilirsiniz. Kayıt defterini yedekleme ve geri yükleme hakkında daha fazla bilgi için bkz. Windows'ta kayıt defterini yedekleme ve geri yükleme.

İlk SharedSection değer (1024), tüm masaüstlerinde ortak olan paylaşılan yığın boyutudur. Buna genel tanıtıcı tablosu da dahildir. Bu tabloda pencereler, menüler, simgeler, imleçler, vb. tanıtıcılar ve paylaşılan sistem ayarları yer alır. Bu değeri değiştirmeniz gerekmeyecektir.

İkinci SharedSection değer, etkileşimli pencere istasyonu WinSta0 ile ilişkili her masaüstü için masaüstü yığınının boyutudur. Kancalar, menüler, dizeler ve pencereler gibi kullanıcı nesneleri bu masaüstü yığınındaki belleği tüketir. Bu değeri değiştirmeniz gerekmeyecektir.

Etkileşimli pencere istasyonunda oluşturulan her masaüstü 3.072 KB'lık varsayılan masaüstü yığınını kullanır. Varsayılan olarak, sistem Winsta0'da aşağıdaki üç masaüstünü oluşturur:

  • Winlogon

  • Varsayılan

    Varsayılan uygulama masaüstü, STARTUPINFO.lpDesktop yapısı üyesinde belirtilen tüm işlemler Winsta0\default tarafından kullanılır. lpDesktop yapı üyesi NULL olduğunda, pencere istasyonu ve masaüstü üst işlemden devralınır. Hizmetin Masaüstü ile Etkileşim Kurmasına İzin Ver başlangıç seçeneği seçili olarak LocalSystem hesabı altında yürütülen tüm hizmetler kullanılır Winsta0\Default. Tüm bu işlemler, Varsayılan uygulama masaüstü ile ilişkili masaüstü yığınını paylaşır.

  • Ekran koruyucu

    Ekran koruyucu masaüstü, bir ekran koruyucu görüntülendiğinde etkileşimli pencere istasyonunda (WinSta0) oluşturulur.

Üçüncü SharedSection değeri, etkileşimsiz bir pencere istasyonuyla ilişkili her masaüstü için masaüstü yığınının boyutudur. Bu değer yoksa, etkileşimsiz pencere istasyonları için masaüstü yığınının boyutu, etkileşimli pencere istasyonları için belirtilen boyutla (yani ikinci SharedSection değeri) aynı olur.

Yalnızca iki SharedSection değeri varsa, etkileşimsiz pencere istasyonlarında oluşturulan masaüstleri için masaüstü yığınının boyutunu belirtmek üzere üçüncü bir değer ekleyebilirsiniz.

Bir kullanıcı hesabı altında yürütülen her hizmet işlemi, Service Control Manager (SCM) tarafından oluşturulan, etkileşimsiz bir pencere istasyonunda yeni bir masaüstü alır. Bu nedenle, bir kullanıcı hesabı altında yürütülen her hizmet, üçüncü SharedSection değerinde belirtilen kilobaytlık masaüstü yığını sayısını kullanır. Hizmetin Masaüstüyle Etkileşime İzin Verme seçeneği belirlenmediğinde LocalSystem hesabı altında yürütülen tüm hizmetler, etkileşimsiz hizmet pencere istasyonunda (Service-0x0-3e7$) Varsayılan masaüstünün masaüstü yığınını paylaşır.

Etkileşimli ve etkileşimsiz pencere istasyonlarında kullanılan toplam masaüstü yığını arabelleğe sığmalıdır.

İkinci veya üçüncü SharedSection değerinin azaltılması, ilgili pencere istasyonlarında oluşturulabilecek masaüstü bilgisayar sayısını artırır. Daha küçük değerler, masaüstünde oluşturulabilecek kanca, menü, dize ve pencere sayısını sınırlar. Öte yandan, ikinci veya üçüncü SharedSection değerinin artırılması, oluşturulabilecek masaüstü bilgisayar sayısını azaltır. Ancak bu, masaüstünde oluşturulabilecek kanca, menü, dize ve pencere sayısını da artırır.

SCM, kullanıcı hesabı altında çalışan her hizmet işlemi için etkileşimsiz pencere istasyonunda yeni bir masaüstü oluşturduğundan, daha büyük bir üçüncü SharedSection değeri sistemde başarıyla çalıştırılabilen kullanıcı hesabı hizmetlerinin sayısını azaltır. İkinci veya üçüncü SharedSection değeri için belirtilebilen en düşük değer 128'dir. Daha küçük bir değer kullanma girişiminde bunun yerine 128 kullanılır.

Bir işlem kullanıcı nesnelerine ihtiyaç duyduğunda masaüstü yığını User32.dll tarafından ayrılır. Bir uygulama User32.dll bağımlı değilse masaüstü yığınını kullanmaz.

Not

Windows Server 2003'te, aşağıdaki koşullardan biri doğru olduğunda belirli bir olay Sistem günlüğüne kaydedilir:

  • Masaüstü yığını dolarsa aşağıdaki olay günlüğe kaydedilir:

    Event Type: Warning
    Event Source: Win32k
    Event Category: None
    Event ID: 243
    Date: Date
    Time: Time
    User: N/A
    Computer: ServerName
    Description: A desktop heap allocation failed.
    

    Bu durumda, masaüstü yığını boyutunu artırın.

  • Toplam masaüstü yığını sistem genelinde arabellek boyutuna dönüşürse, aşağıdaki olay günlüğe kaydedilir:

    Event Type: Warning
    Event Source: Win32k
    Event Category: None
    Event ID: 244
    Date: Date
    Time: Time
    User: N/A
    Computer: ServerName
    Description: Failed to create a desktop due to desktop heap exhaustion.
    

    Bu durumda, masaüstü yığını boyutunu küçültün.

Windows Server 2003'te, aşağıdaki koşullardan biri doğru olduğunda sistem genelinde bir arabellek 20 MB'tır:

  • Bir Terminal Hizmetleri ortamındasınız.
  • /3GB anahtarı Boot.ini dosyasında belirtilir.

Uygulandığı öğe

  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • Windows Vista Ultimate
  • Windows Vista Enterprise
  • Windows Vista Business
  • Windows Vista Home Premium
  • Windows 7 Ultimate
  • Windows 7 Enterprise
  • Windows 7 Professional
  • Windows 7 Home Premium
  • Windows 8 Enterprise
  • Windows 8 Pro, Windows 8
  • Windows 8.1 Enterprise
  • Windows 8.1 Pro
  • Windows 8.1
  • Microsoft Windows Server 2003 Datacenter Edition (32 bit x86)
  • Microsoft Windows Server 2003 Datacenter x64 Edition
  • Microsoft Windows Server 2003 Enterprise Sürümü (32 bit x86)
  • Microsoft Windows Server 2003 Enterprise x64 Edition
  • Microsoft Windows Server 2003 Standard Edition (32 bit x86)
  • Microsoft Windows Server 2003 Standard x64 Edition
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 Standard
  • Windows Server 2012 Datacenter
  • Windows Server 2012 Standard
  • Windows Server 2012 R2 Datacenter
  • Windows Server 2012 R2 Standard