Kiosk modunda çalışan UWP Unity uygulamasında user32.dll ekran çözünürlüğünü değiştiremiyor

Jullia Hummingbird 20 Saygınlık puanı
2026-05-16T05:38:13.2533333+00:00

Şirketimiz, halka açık kurumsal ekranlar için Unity tabanlı bir UWP uygulaması geliştiriyor ve ekran çözünürlüğünü değiştirmek için user32.dll kullanıyor. Çözünürlük normal bir Windows masaüstünde doğru şekilde değişse de, uygulama Windows Kiosk modunda çalıştığında bu işlem tamamen başarısız oluyor.

Uygulama Kiosk modunda çalışırken ekran boyutunu kontrol etmek için farklı yöntemler veya çözümler var mı? Yardımınız için şimdiden çok teşekkür ederiz.

İş için Windows | Windows 365 İş
0 yorum Açıklama yok

1 yanıt

Sıralama ölçütü: En yararlı
  1. Tan Vu 2,665 Saygınlık puanı Bağımsız Danışman
    2026-05-16T06:31:41.78+00:00

    Merhaba,

    Windows Kiosk modunun (özellikle Tek Uygulamalı - Assigned Access yapısının) getirdiği sıkı güvenlik kısıtlamaları nedeniyle bu sorunla karşılaşmanız oldukça normaldir. UWP uygulamaları zaten kendi içinde izole (sandbox) çalışır; uygulama Kiosk moduna alındığında ise yetkileri daha da kısıtlanır. user32.dll (örneğin ChangeDisplaySettings) gibi doğrudan işletim sisteminin donanım katmanına müdahale eden Win32 API'leri, Kiosk modunun güvenlik duvarına takılır.

    Bu durumu aşmak ve ekran boyutunu/çözünürlüğünü kontrol etmek için uygulayabileceğiniz en etkili yöntemler şunlardır:

    1. Unity'nin Dahili Çözünürlük Yönetimi (En Güvenli ve Pratik Yol)

    Eğer amacınız işletim sisteminin çözünürlüğünü değiştirmek yerine, uygulamanın performansını artırmak veya UI ölçeklemesini optimize etmekse, donanım çözünürlüğüne dokunmanıza gerek yoktur. Unity'nin render çözünürlüğünü değiştirerek aynı görsel sonucu elde edebilirsiniz.

    Kiosk modu altında Windows, uygulamanın ekranı kaplamasını zorunlu kılar. Siz Unity içinden çözünürlüğü düşürseniz bile Windows bunu ekrana otomatik olarak fitleyecektir (upscaling).

    // Ekran modunu koruyarak sadece render çözünürlüğünü değiştirir
    Screen.SetResolution(1920, 1080, FullScreenMode.ExclusiveFullScreen);
    
    • Avantajı: Herhangi bir yetki veya API çağrısı gerektirmez, Kiosk modunda kusursuz çalışır.
    • Dezavantajı: Monitörün fiziksel yenileme hızını (Hz) veya gerçek masaüstü çözünürlüğünü değiştirmez.
    1. Shell Launcher v2 ve Win32 Yan Süreç (Sidecar) Kullanımı

    Eğer donanım çözünürlüğünü değiştirmek kesinlikle zorunluysa, klasik UWP Kiosk modu yerine Shell Launcher v2 kullanmanız gerekir.

    UWP mimarisinde kalıp user32.dll kullanabilmek için şu adımları takip edebilirsiniz:

    • UWP projenize bir FullTrustProcessLauncher (Desktop Bridge) bileşeni ekleyin. Bu, UWP uygulamanızın arkasında çalışabilecek küçük bir Win32 konsol uygulamasıdır.
    • UWP uygulamanız AppService aracılığıyla bu Win32 arka plan uygulamasına "Çözünürlüğü X yap" komutu gönderir.
    • Win32 uygulaması tam yetkiyle (RunFullTrust) çalışacağı için user32.dll kodunu başarıyla tetikler.

    TV

    Bu yanıt yardımcı oldu mu?

    0 yorum Açıklama yok

Yanıtınız

Yanıtlar, soru sahibi tarafından ‘Kabul Edildi’ ve moderatörler tarafından ‘Önerildi’ olarak işaretlenebilir, bu da kullanıcıların yanıtın yazarın sorununu çözdüğünü bilmelerine yardımcı olur.