Berjalan dengan Hak Istimewa Administrator

Langkah pertama dalam menetapkan jenis akun mana yang perlu dijalankan aplikasi Anda adalah memeriksa sumber daya apa yang akan digunakan aplikasi dan API istimewa apa yang akan dipanggilnya. Anda mungkin menemukan bahwa aplikasi, atau bagian besarnya, tidak memerlukan hak istimewa administrator. Menulis Secure Code, oleh Michael Howard dan David LeBlanc menawarkan deskripsi yang sangat baik tentang cara melakukan penilaian ini dan sangat direkomendasikan. (Sumber daya ini mungkin tidak tersedia di beberapa bahasa dan negara.)

Anda dapat memberikan hak istimewa yang dibutuhkan aplikasi Anda dengan lebih sedikit paparan serangan berbahaya dengan menggunakan salah satu pendekatan berikut:

  • Jalankan di bawah akun dengan hak istimewa yang lebih sedikit. Salah satu cara untuk melakukan ini adalah dengan menggunakan PrivilegeCheck untuk menentukan hak istimewa apa yang diaktifkan dalam token. Jika hak istimewa yang tersedia tidak memadai untuk operasi saat ini, Anda dapat menonaktifkan kode tersebut dan meminta pengguna untuk masuk ke akun dengan hak istimewa administrator.
  • Pisahkan ke fungsi aplikasi terpisah yang memerlukan izin administrator. Anda dapat memberikan pintasan kepada pengguna yang menjalankan perintah RunAs. Untuk instruksi terperinci tentang cara menyiapkan pintasan, cari "runas" di Bantuan. Secara terprogram, Anda dapat mengonfigurasi perintah RunAs di bawah kunci registri AppId Key untuk aplikasi Anda.
  • Autentikasi pengguna dengan memanggil CredUIPromptForCredentials (GUI) atau CredUICmdLinePromptForCredentials (baris perintah) untuk mendapatkan nama pengguna dan kata sandi. Misalnya, lihat Meminta Kredensial kepada Pengguna.
  • Meniru pengguna. Proses yang dimulai di bawah akun yang sangat istimewa seperti Sistem dapat meniru akun pengguna dengan memanggil ImpersonateLoggedOnUser atau fungsi Impersonate serupa, sehingga mengurangi tingkat hak istimewa. Namun, jika panggilan ke RevertToSelf disuntikkan ke dalam utas, proses kembali ke hak istimewa Sistem asli.

Jika Anda telah menentukan bahwa aplikasi Anda harus berjalan di bawah akun dengan hak istimewa administrator dan bahwa kata sandi administrator harus disimpan dalam sistem perangkat lunak, lihat Menangani Kata Sandi untuk metode melakukan ini dengan aman.