Setelah program saya diinstal pada mesin klien, bagaimana cara memaksa program saya untuk berjalan sebagai administrator di Windows 7?
876
Setelah program saya diinstal pada mesin klien, bagaimana cara memaksa program saya untuk berjalan sebagai administrator di Windows 7?
Jawaban:
Anda ingin memodifikasi manifes yang tertanam dalam program. Ini berfungsi pada Visual Studio 2008 dan lebih tinggi: Proyek + Tambah Item Baru, pilih "File Manifest Aplikasi". Ubah
<requestedExecutionLevel>
elemen menjadi:Pengguna mendapatkan prompt UAC ketika mereka memulai program. Gunakan dengan bijak; kesabaran mereka bisa cepat habis.
sumber
Menambahkan
requestedExecutionLevel
elemen ke manifes Anda hanya setengah dari pertempuran; Anda harus ingat bahwa UAC dapat dimatikan. Jika ya, Anda harus melakukan pemeriksaan dengan cara lama dan memasang dialog kesalahan jika pengguna bukan administrator(panggil
IsInRole(WindowsBuiltInRole.Administrator)
utas AndaCurrentPrincipal
).sumber
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
jugaIsInRole
, Anders berbicara tentang.Langkah-langkah rinci adalah sebagai berikut.
Perhatikan bahwa menggunakan kode ini Anda harus mematikan pengaturan keamanan ClickOnce, untuk melakukan ini, masuk ke dalam Properties -> Security -> ClickOnce Security
sumber
New Item...
bukan opsi pada proyek Layanan Pemasang saya. Bagaimana cara menambahkan manifes aplikasi? Saya bisa menambahkannya ke proyek utama saya tetapi bukan installernya.Saya menerapkan beberapa kode untuk melakukannya secara manual:
sumber
Anda dapat menyematkan file manifes dalam file EXE, yang akan menyebabkan Windows (7 atau lebih tinggi) untuk selalu menjalankan program sebagai administrator.
Anda dapat menemukan detail lebih lanjut di Langkah 6: Membuat dan Menanamkan Manifestasi Aplikasi (UAC) (MSDN).
sumber
Saat bekerja di Visual Studio 2008, klik kanan
Project -> Add New Item
dan kemudian pilihApplication Manifest File
.Di file manifes, Anda akan menemukan tag
requestedExecutionLevel
, dan Anda dapat mengatur level ke tiga nilai:<requestedExecutionLevel level="asInvoker" uiAccess="false" />
ATAU
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
ATAU
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Untuk mengatur aplikasi agar dijalankan sebagai administrator, Anda harus memilih yang di tengah.
sumber
Sesuai
Anda akan ingin menambahkan manifes aplikasi jika Anda belum memilikinya atau tidak tahu cara menambahkannya. Karena beberapa proyek tidak secara otomatis menambahkan file manifes terpisah, pertama-tama buka properti proyek, navigasikan ke tab Aplikasi dan periksa untuk memastikan proyek Anda tidak mengecualikan manifes di bagian bawah keran.
sumber
Di Visual Studio 2010 klik kanan nama proyek Anda. Tekan "Lihat Pengaturan Windows", ini menghasilkan dan membuka file yang disebut "app.manifest". Di dalam file ini ganti "asInvoker" dengan "requireAdministrator" seperti yang dijelaskan di bagian komentar dalam file.
sumber
Cara lain untuk melakukan ini, hanya dalam kode, adalah untuk mendeteksi jika proses berjalan sebagai admin seperti dalam jawaban oleh @NG.. Dan kemudian buka aplikasi lagi dan tutup yang sekarang.
Saya menggunakan kode ini ketika aplikasi hanya membutuhkan hak admin ketika dijalankan dalam kondisi tertentu, seperti ketika menginstal sendiri sebagai layanan. Jadi itu tidak perlu dijalankan sebagai admin sepanjang waktu seperti jawaban lain memaksanya juga.
Catatan dalam kode di bawah
NeedsToRunAsAdmin
ini adalah metode yang mendeteksi jika dalam kondisi saat ini, hak istimewa admin diperlukan. Jika ini kembalifalse
kode tidak akan naik sendiri. Ini adalah keuntungan utama dari pendekatan ini dibandingkan yang lain.Meskipun kode ini memiliki kelebihan yang disebutkan di atas, kode ini perlu diluncurkan kembali sebagai proses baru yang tidak selalu seperti yang Anda inginkan.
sumber
runas
sebagai administrator dari pengguna non-admin, jika tidak maka akan terbuka secara diam-diam dengan izin pengguna saat ini (diperiksa pada windows 7 64 bit). Sejauh yang saya tahu satu-satunya hal yang dapat Anda lakukan dengan UAC dinonaktifkan dan hak admin hilang adalah menghentikan eksekusi pada saat yang tepat.Anda dapat membuat manifes menggunakan Pengaturan Keamanan ClickOnce, dan kemudian menonaktifkannya:
Setelah Anda mengkliknya, sebuah file akan dibuat di bawah folder properti Project bernama app.manifest setelah ini dibuat, Anda dapat menghapus centang pada
Enable ClickOnce Security Settings
opsiBuka file itu dan ubah baris ini:
untuk:
Ini akan membuat program membutuhkan hak administrator.
sumber
Ini adalah versi sederhana dari jawaban ini , di atas oleh @NG
sumber
Klik kanan executable Anda, pergi ke Properties> Compatibility dan centang kotak 'Jalankan program ini sebagai admin'.
Jika Anda ingin menjalankannya sebagai admin untuk semua pengguna, lakukan hal yang sama di 'ubah pengaturan untuk semua pengguna'.
sumber