Peluncur Shell

Dengan menggunakan Shell Launcher, Anda dapat mengonfigurasi perangkat kios untuk menggunakan hampir semua aplikasi atau dapat dieksekusi sebagai shell kustom Anda. Aplikasi yang Anda tentukan menggantikan shell default (explorer.exe) yang biasanya berjalan saat pengguna masuk.

Anda juga dapat mengonfigurasi Shell Launcher untuk meluncurkan aplikasi shell yang berbeda untuk pengguna atau grup pengguna yang berbeda.

Ada beberapa pengecualian untuk aplikasi dan executable yang dapat Anda gunakan sebagai shell kustom:

  • Anda tidak dapat menggunakan executable berikut sebagai shell kustom: C:\\Windows\\System32\\Eshell.exe. Menggunakan Eshell.exe sebagai shell default akan menghasilkan layar kosong setelah pengguna masuk.
  • Anda tidak dapat menggunakan aplikasi Universal Windows sebagai shell kustom.
  • Anda tidak dapat menggunakan shell kustom untuk meluncurkan aplikasi Universal Windows, misalnya, aplikasi Pengaturan.
  • Anda tidak dapat menggunakan aplikasi yang meluncurkan proses yang berbeda dan keluar sebagai shell kustom. Misalnya, Anda tidak dapat menentukan write.exe di Peluncur Shell. Shell Launcher meluncurkan shell kustom dan memantau proses untuk mengidentifikasi kapan shell kustom keluar. Write.exe membuat proses dan keluar wordpad.exe 32-bit. Karena Shell Launcher tidak mengetahui proses wordpad.exe yang baru dibuat, Shell Launcher mengambil tindakan berdasarkan kode keluar Write.exe, dan memulai ulang shell kustom.
  • Anda tidak dapat mencegah sistem dimatikan. Untuk Shell Launcher V1 dan V2, Anda tidak dapat memblokir sesi yang berakhiran dengan mengembalikan FALSE saat menerima pesan WM_QUERYENDSESSION dalam aplikasi grafis atau mengembalikan FALSE dalam rutinitas handler yang ditambahkan melalui fungsi SetConsoleCtrlHandler dalam aplikasi konsol .

Catatan

Anda tidak dapat mengonfigurasi Peluncur Shell dan akses yang ditetapkan pada sistem yang sama.

Gunakan Shell Launcher V2, Anda dapat menentukan aplikasi Universal Windows sebagai shell kustom. Centang Gunakan Shell Launcher untuk membuat kios Windows 10 untuk perbedaan antara Shell Launcher v1 dan Shell Launcher V2.

Shell Launcher memproses kunci registri Run dan RunOnce sebelum memulai shell kustom, sehingga shell kustom Anda tidak perlu menangani startup otomatis aplikasi dan layanan lain.

Shell Launcher juga menangani perilaku sistem saat shell kustom Anda keluar. Anda dapat mengonfigurasi perilaku keluar shell jika perilaku default tidak memenuhi kebutuhan Anda.

Metode mengontrol akses ke aplikasi desktop dan komponen sistem lainnya dapat digunakan selain menggunakan Peluncur Shell seperti, Kebijakan Grup, AppLocker, dan Mobile Manajemen Perangkat

Catatan

Di Shell Launcher v1, tersedia di Windows 10, Anda hanya dapat menentukan aplikasi desktop Windows sebagai shell pengganti. Di Shell Launcher v2, tersedia di Windows 10, versi 1809 ke atas, Anda juga dapat menentukan aplikasi UWP sebagai shell pengganti.

Untuk menggunakan Shell Launcher v2 di versi 1809, Anda perlu menginstal pembaruan KB4551853.

Perbedaan antara Shell Launcher v1 dan Shell Launcher v2

Shell Launcher v1 menggantikan explorer.exe, shell default, dengan eshell.exe, yang dapat meluncurkan aplikasi desktop Windows. Shell Launcher v2 menggantikan explorer.exe dengan customshellhost.exe. File yang dapat dieksekusi baru ini dapat meluncurkan aplikasi desktop Windows atau aplikasi UWP. Selain memungkinkan Anda menggunakan aplikasi UWP untuk shell pengganti Anda, Shell Launcher v2 menawarkan lebih banyak penyempurnaan:

  • Anda dapat menggunakan aplikasi desktop Windows kustom yang kemudian dapat meluncurkan aplikasi UWP, seperti Pengaturan dan Keyboard Sentuh.
  • Dari shell UWP kustom, Anda dapat meluncurkan tampilan sekunder dan berjalan di beberapa monitor.
  • Aplikasi shell kustom berjalan dalam layar penuh, dan dapat menjalankan aplikasi lain dalam layar penuh sesuai permintaan pengguna. Untuk contoh konfigurasi XML untuk kombinasi aplikasi yang berbeda, lihat Sampel untuk Shell Launcher v2.

Persyaratan

Windows 10 Enterprise atau Windows 10 Education.

Terminologi

  • Aktifkan, aktifkan: Untuk membuat pengaturan tersedia untuk perangkat dan secara opsional menerapkan pengaturan ke perangkat.
  • Mengkonfigurasi: Untuk menyesuaikan pengaturan atau subsetting.
  • Peluncur Shell Tersemat: Fitur ini disebut Embedded Shell Launcher di Windows 10, versi 1511.
  • Peluncur Shell Kustom: Fitur ini disebut Shell Launcher di Windows 10, versi 1607 dan yang lebih baru.

Mengaktifkan Peluncur Shell

Peluncur Shell adalah komponen opsional dan tidak diaktifkan secara default di Windows 10. Ini harus diaktifkan sebelum mengonfigurasi. Anda dapat mengaktifkan dan mengonfigurasi Shell Launcher dalam gambar Windows 10 yang disesuaikan (.wim) jika Microsoft Windows belum diinstal. Jika Windows telah diinstal, Anda harus mengaktifkan Shell Launcher sebelum menerapkan paket provisi untuk mengonfigurasi Shell Launcher.

Aktifkan Peluncur Shell menggunakan Panel Kontrol

  1. Di bidang Cari web dan Windows , ketik Program dan Fitur dan tekan Enter atau ketuk atau pilih Program dan Fitur untuk membukanya.
  2. Di jendela Program dan Fitur , pilih Aktifkan atau nonaktifkan fitur Windows.
  3. Di jendela Fitur Windows , perluas simpul Penguncian Perangkat , pilih atau kosongkan kotak centang untuk Peluncur Shell, lalu pilih OK.
  4. Jendela Fitur Windows menunjukkan bahwa Windows sedang mencari file yang diperlukan dan menampilkan bilah kemajuan. Setelah ditemukan, jendela menunjukkan bahwa Windows menerapkan perubahan. Setelah selesai, jendela menunjukkan perubahan yang diminta selesai.
  5. Pilih Tutup untuk menutup jendela Fitur Windows .

Catatan

Mengaktifkan Peluncur Shell tidak memerlukan hidupkan ulang perangkat.

Aktifkan Peluncur Shell dengan memanggil WESL_UserSetting

  1. Aktifkan atau nonaktifkan Shell Launcher dengan memanggil fungsi WESL_UserSetting.SetEnabled di WESL_UserSetting kelas Windows Management Instrumentation (WMI).
  2. Jika Anda mengaktifkan atau menonaktifkan Peluncur Shell menggunakan WESL_UserSetting, perubahan tidak memengaruhi sesi apa pun yang saat ini masuk; Anda harus keluar dan masuk kembali.

Contoh ini menggunakan gambar Windows yang disebut install.wim, tetapi Anda dapat menggunakan prosedur yang sama untuk menerapkan paket provisi (untuk informasi selengkapnya tentang DISM, lihat Apa itu Layanan dan Manajemen Gambar Penyebaran.

Mengaktifkan Peluncur Shell menggunakan DISM

  1. Buka perintah dengan hak istimewa admin.

  2. Salin install.wim ke folder sementara di hard drive (dalam langkah-langkah berikut, kami menganggapnya disebut C:\wim).

  3. Buat direktori baru.

    md c:\wim
    
  4. Pasang gambar.

    dism /mount-wim /wimfile:c:\bootmedia\sources\install.wim /index:1 /MountDir:c:\wim
    
  5. Aktifkan fitur.

    dism /image:c:\wim /enable-feature /all /featureName:Client-EmbeddedShellLauncher
    
  6. Terapkan perubahan.

    dism /unmount-wim /MountDir:c:\wim /Commit
    

Mengaktifkan Peluncur Shell menggunakan Designer Konfigurasi Windows

Pengaturan Peluncur Shell juga tersedia sebagai pengaturan provisi Windows sehingga Anda dapat mengonfigurasi pengaturan ini untuk diterapkan selama runtime gambar. Anda dapat mengatur satu atau semua pengaturan Shell Launcher dengan membuat paket provisi menggunakan Windows Configuration Designer lalu menerapkan paket provisi selama waktu penyebaran gambar atau runtime. Jika Windows belum diinstal dan Anda menggunakan Windows Configuration Designer untuk membuat media penginstalan dengan pengaturan untuk Shell Launcher yang disertakan dalam gambar atau Anda menerapkan paket provisi selama penyiapan, Anda harus mengaktifkan Shell Launcher pada media penginstalan dengan DISM agar paket provisi berhasil diterapkan.

Gunakan langkah-langkah berikut untuk membuat paket provisi yang berisi pengaturan ShellLauncher.

  1. Buat paket provisi di Designer Konfigurasi Windows dengan mengikuti instruksi dalam Membuat paket provisi untuk Windows 10.
  2. Di halaman Kustomisasi yang tersedia, pilih Pengaturan> runtimeSMISettings>ShellLauncher.
  3. Atur nilai Aktifkan ke AKTIFKAN. Opsi lainnya untuk mengonfigurasi Shell Launcher muncul, dan Anda dapat mengatur nilai sesuai keinginan.
  4. Setelah selesai mengonfigurasi pengaturan dan membuat paket provisi, Anda dapat menerapkan paket ke waktu penyebaran gambar atau runtime. Lihat Terapkan paket provisi untuk informasi selengkapnya. Proses untuk menerapkan paket ke gambar Windows 10 Enterprise sama.

Mengonfigurasi Peluncur Shell

Ada dua cara untuk mengonfigurasi Shell Launcher:

  1. Di Windows 10, versi 1803, Anda dapat mengonfigurasi Shell Launcher menggunakan simpul ShellLauncher dari Penyedia Layanan Konfigurasi Akses (CSP) yang Ditetapkan. Lihat AssignedAccess CSP untuk detailnya. Mengonfigurasi Shell Launcher menggunakan metode ini juga secara otomatis mengaktifkan Shell Launcher pada perangkat, jika perangkat mendukungnya.
  2. Gunakan penyedia Shell Launcher WMI langsung dalam skrip atau aplikasi PowerShell.

Anda dapat mengonfigurasi opsi berikut untuk Shell Launcher:

  • Aktifkan atau nonaktifkan Peluncur Shell.
  • Tentukan konfigurasi shell untuk pengguna atau grup tertentu.
  • Menghapus konfigurasi shell untuk pengguna atau grup tertentu.
  • Ubah konfigurasi shell default.
  • Dapatkan informasi tentang konfigurasi shell untuk pengguna atau grup tertentu.

Perubahan apa pun tidak berlaku sampai pengguna masuk.

Luncurkan shell yang berbeda untuk akun pengguna yang berbeda

Secara default, Shell Launcher menjalankan shell default, yang ditentukan saat Anda membuat gambar OS pada waktu desain. Shell default diatur ke Cmd.exe, tetapi Anda dapat menentukan file yang dapat dieksekusi menjadi shell default.

Anda dapat mengonfigurasi Shell Launcher untuk meluncurkan shell yang berbeda untuk pengguna atau grup tertentu jika Anda tidak ingin menjalankan shell default. Misalnya, Anda dapat mengonfigurasi perangkat untuk menjalankan shell aplikasi kustom untuk akun tamu, tetapi menjalankan shell Windows Explorer standar untuk akun administrator untuk melayani perangkat.

Jika Anda menggunakan penyedia WMI untuk mengonfigurasi Peluncur Shell untuk pengguna atau grup pada durasi, Anda harus menggunakan pengidentifikasi keamanan (SID) untuk pengguna atau grup tersebut; Anda tidak dapat menggunakan nama pengguna atau nama grup.

Untuk informasi selengkapnya tentang pengidentifikasi keamanan umum, lihat SID terkenal.

Ketika akun masuk saat ini milik dua grup atau lebih yang memiliki konfigurasi berbeda yang ditentukan untuk setiap grup, Shell Launcher menggunakan konfigurasi pertama yang ditemukannya. Urutan pencarian tidak ditentukan, jadi kami sarankan Anda menghindari penetapan pengguna ke beberapa grup dengan konfigurasi Peluncur Shell yang berbeda.

Melakukan tindakan saat shell keluar

Saat shell kustom keluar, Shell Launcher dapat melakukan salah satu dari empat tindakan:

Tindakan Deskripsi
0 Mulai ulang shell.
1 Mulai ulang perangkat.
2 Matikan perangkat.
3 Tidak melakukan apa pun.

Penting

Pastikan bahwa aplikasi shell Anda tidak keluar secara otomatis dan tidak secara otomatis ditutup oleh fitur apa pun seperti Filter Dialog, karena ini dapat menyebabkan siklus keluar dan memulai ulang yang tak terbatas, kecuali tindakan kode pengembalian diatur untuk tidak melakukan apa-apa.

Tindakan kode pengembalian default

Anda dapat menentukan tindakan kode pengembalian default untuk Shell Launcher dengan pengaturan DefaultReturnCodeAction. Jika Anda tidak mengubah nilai awal, tindakan kode pengembalian default diatur ke 0 (nol), yang menunjukkan bahwa Peluncur Shell memulai ulang shell saat shell keluar.

Memetakan kode keluar ke tindakan Peluncur Shell

Peluncur Shell dapat mengambil tindakan tertentu berdasarkan kode keluar yang dikembalikan oleh shell. Untuk kode keluar yang diberikan yang dikembalikan oleh shell, Anda dapat mengonfigurasi tindakan yang diambil Shell Launcher dengan memetakan kode keluar tersebut ke salah satu tindakan keluar shell.

Jika kode keluar tidak cocok dengan nilai yang ditentukan, Shell Launcher melakukan tindakan kode pengembalian default.

Misalnya, shell Anda mungkin mengembalikan nilai kode keluar -1, 0, 1, atau 255 tergantung pada bagaimana shell keluar. Anda dapat mengonfigurasi Peluncur Shell untuk:

  • hidupkan ulang perangkat (1) ketika shell mengembalikan kode keluar dari nilai -1
  • hidupkan ulang shell (0) ketika shell mengembalikan kode keluar dari nilai 0
  • tidak melakukan apa pun (3) ketika shell mengembalikan kode keluar dari nilai 1
  • mematikan perangkat (2) saat shell mengembalikan kode keluar dari nilai 255

Pemetaan tindakan kode pengembalian kustom Anda akan terlihat seperti ini:

Keluar dari kode Tindakan
-1 1 (hidupkan ulang perangkat)
0 0 (hidupkan ulang shell)
1 3 (tidak melakukan apa-apa)
255 2 (matikan perangkat)

Mengatur shell kustom Anda

Ubah skrip PowerShell berikut ini sebagaimana mestinya dan jalankan skrip pada perangkat.

# Check if shell launcher license is enabled
function Check-ShellLauncherLicenseEnabled
{
    [string]$source = @"
using System;
using System.Runtime.InteropServices;

static class CheckShellLauncherLicense
{
    const int S_OK = 0;

    public static bool IsShellLauncherLicenseEnabled()
    {
        int enabled = 0;

        if (NativeMethods.SLGetWindowsInformationDWORD("EmbeddedFeature-ShellLauncher-Enabled", out enabled) != S_OK) {
            enabled = 0;
        }
        return (enabled != 0);
    }

    static class NativeMethods
    {
        [DllImport("Slc.dll")]
        internal static extern int SLGetWindowsInformationDWORD([MarshalAs(UnmanagedType.LPWStr)]string valueName, out int value);
    }

}
"@

    $type = Add-Type -TypeDefinition $source -PassThru

    return $type[0]::IsShellLauncherLicenseEnabled()
}

[bool]$result = $false

$result = Check-ShellLauncherLicenseEnabled
"`nShell Launcher license enabled is set to " + $result
if (-not($result))
{
    "`nThis device doesn't have required license to use Shell Launcher"
    exit
}

$COMPUTER = "localhost"
$NAMESPACE = "root\standardcimv2\embedded"

# Create a handle to the class instance so we can call the static methods.
try {
    $ShellLauncherClass = [wmiclass]"\\$COMPUTER\${NAMESPACE}:WESL_UserSetting"
    } catch [Exception] {
    write-host $_.Exception.Message; 
    write-host "Make sure Shell Launcher feature is enabled"
    exit
    }


# This well-known security identifier (SID) corresponds to the BUILTIN\Administrators group.

$Admins_SID = "S-1-5-32-544"

# Create a function to retrieve the SID for a user account on a machine.

function Get-UsernameSID($AccountName) {

    $NTUserObject = New-Object System.Security.Principal.NTAccount($AccountName)
    $NTUserSID = $NTUserObject.Translate([System.Security.Principal.SecurityIdentifier])

    return $NTUserSID.Value
}

# Get the SID for a user account named "Cashier". Rename "Cashier" to an existing account on your system to test this script.

$Cashier_SID = Get-UsernameSID("Cashier")

# Define actions to take when the shell program exits.

$restart_shell = 0
$restart_device = 1
$shutdown_device = 2
$do_nothing = 3

# Examples. You can change these examples to use the program that you want to use as the shell.

# This example sets the command prompt as the default shell, and restarts the device if the command prompt is closed. 

$ShellLauncherClass.SetDefaultShell("cmd.exe", $restart_device)

# Display the default shell to verify that it was added correctly.

$DefaultShellObject = $ShellLauncherClass.GetDefaultShell()

"`nDefault Shell is set to " + $DefaultShellObject.Shell + " and the default action is set to " + $DefaultShellObject.defaultaction

# Set Internet Explorer as the shell for "Cashier", and restart the machine if Internet Explorer is closed.

$ShellLauncherClass.SetCustomShell($Cashier_SID, "c:\program files\internet explorer\iexplore.exe www.microsoft.com", ($null), ($null), $restart_shell)

# Set Explorer as the shell for administrators.

$ShellLauncherClass.SetCustomShell($Admins_SID, "explorer.exe")

# View all the custom shells defined.

"`nCurrent settings for custom shells:"
Get-WmiObject -namespace $NAMESPACE -computer $COMPUTER -class WESL_UserSetting | Select Sid, Shell, DefaultAction

# Enable Shell Launcher

$ShellLauncherClass.SetEnabled($TRUE)

$IsShellLauncherEnabled = $ShellLauncherClass.IsEnabled()

"`nEnabled is set to " + $IsShellLauncherEnabled.Enabled

# Remove the new custom shells.

$ShellLauncherClass.RemoveCustomShell($Admins_SID)

$ShellLauncherClass.RemoveCustomShell($Cashier_SID)

# Disable Shell Launcher

$ShellLauncherClass.SetEnabled($FALSE)

$IsShellLauncherEnabled = $ShellLauncherClass.IsEnabled()

"`nEnabled is set to " + $IsShellLauncherEnabled.Enabled

Catatan

Skrip sebelumnya mencakup contoh beberapa opsi konfigurasi, termasuk menghapus shell kustom dan menonaktifkan Peluncur Shell. Ini tidak dimaksudkan untuk dijalankan apa adanya.

Hak pengguna Peluncur Shell

Shell kustom diluncurkan dengan tingkat hak pengguna yang sama dengan akun yang masuk. Ini berarti bahwa pengguna dengan hak administrator dapat melakukan tindakan sistem apa pun yang memerlukan hak administrator, termasuk meluncurkan aplikasi lain dengan hak administrator, sementara pengguna tanpa hak administrator tidak dapat.

Peringatan

Jika aplikasi shell Anda memerlukan hak administrator dan perlu ditinggikan, dan Kontrol Akun Pengguna (UAC) ada di perangkat Anda, Anda harus menonaktifkan UAC agar Shell Launcher meluncurkan aplikasi shell.