Cegah elevasi (UAC) untuk aplikasi yang tidak memerlukannya [duplikat]

34

Pertanyaan ini sudah ada jawabannya di sini:

Setelah baru-baru ini pindah dari Vista 32bit ke Windows 7 64bit, salah satu program saya sekarang memerlukan hak admin.

Saya menggunakan editor teks yang agak eksotis (Crimson Editor). Meskipun tidak dirancang untuk Vist / Win7 bekerja dengan baik dengan Vista. Tetapi di bawah Windows 7, program yang dapat dijalankan membuat perisai UAC ini ditambahkan ke ikonnya (meskipun bendera "Jalankan sebagai administrator" di tab kompatibilitas tidak diatur) dan meminta peningkatan setiap kali saya menjalankannya.

Bagaimana Win7 menentukan bahwa aplikasi seperti notepad ini membutuhkan hak admin? Bagaimana saya bisa mengganti heuristik palsu ini?

SealedSun
sumber

Jawaban:

22

Tidak, alasan Crimson Editor melakukan ini BUKAN karena tidak ditandatangani. (Dan ini bukan hal baru untuk Win7). Itu karena manifes aplikasi, yang tertanam pada waktu kompilasi, menentukan requestedPrivilegeLevel="highestLevel".

Menurut posting forum ini , pengembang Editor Crimson mengubah ini di revisi 237-241. Mereka melakukan ini karena fitur "Tambahkan Crimson Editor ke menu konteks konteks" memerlukan hak admin.

Perbaikan jangka panjang akan bagi pengembang Editor Crimson untuk memperbaiki manifes aplikasi mereka. Mereka harus menambahkan diri mereka ke menu konteks shell selama instalasi, atau setidaknya memberi tahu pengguna bahwa mereka harus menjalankan aplikasi secara manual (yang mudah dilakukan) alih-alih membutuhkannya.

Untuk semua aplikasi dengan requestedPrivilegeLevel="highestLevel"manifesnya (gunakan Manifest View untuk melihat manifes aplikasi), Anda dapat menggunakan Toolkit Kompatibilitas Aplikasi Microsoft untuk mengurangi aplikasi dengan perbaikan RunAsInvoker, yang memaksa aplikasi untuk berjalan dengan token pengguna standar Anda.

Untuk informasi lebih lanjut tentang cara menggunakan Perangkat Kompatibilitas Aplikasi, lihat posting ini tentang penerapannya pada Editor Crimson, atau instruksi umum .

the.d.stro
sumber
1
Atau Anda dapat mengganti manifes yang ada menggunakan alat mt.exe baris perintah yang dapat Anda peroleh dengan Visual Studio Express (berkepanjangan tetapi sepadan jika Anda sering mengalami masalah ini). Perhatikan bahwa mengganti manifes yang disematkan akan mengubah file .exe jadi a) pastikan Anda memiliki salinannya jika Anda merusak barang-barang dan b) jika ditandatangani, Anda akan mematahkan tanda tangan (tetapi sepertinya dalam hal ini Anda memiliki sudah ditentukan bahwa itu tetap tidak ditandatangani).
AdamV
the.d.stro, kau penyelamat, itu bekerja dengan baik.
phloopy
1
Beri +1 untuk "koreksi aplikasi mereka" dan gunakan toolkit AppCompat untuk memperbaiki bug mereka.
Ian Boyd
13

Saya menemukan bahwa saya memiliki dua aplikasi yang memiliki masalah ini. Satu memiliki 'pembaruan' dalam nama file dan yang lainnya memiliki 'pembaruan' di 'FileDecsription'. Saya cukup menghapus kata 'pembaruan' dari kedua aplikasi ini dan tidak ada lagi peringatan UAC. Saya menemukan informasi di bawah 'Cara Kerja UAC' - 'Deteksi Penginstal' di:

http://msdn.microsoft.com/en-us/library/aa905330.aspx

Yang menyatakan sebagai berikut:

Deteksi Pemasang hanya berlaku untuk:

  • Eksekusi 32 bit
  • Aplikasi tanpa Tingkat Eksekusi yang diminta
  • Proses interaktif berjalan sebagai Pengguna Standar dengan UAC diaktifkan

Sebelum proses 32 bit dibuat, atribut berikut diperiksa untuk menentukan apakah itu adalah penginstal:

  • Nama file mencakup kata kunci seperti "instal," "pengaturan," dan "perbarui."
  • Kata kunci dalam bidang Sumber Daya Versi berikut: Vendor, Nama Perusahaan, Nama Produk, Deskripsi File, Nama File Asli, Nama Internal, dan Nama Ekspor.
  • Kata kunci dalam manifes aplikasi berdampingan tertanam di eksekusi.
  • Kata kunci dalam entri StringTable tertentu yang ditautkan dalam executable.
  • Atribut kunci dalam data file sumber daya yang ditautkan dalam executable.
  • Urutan byte yang ditargetkan dalam executable.

  • Catatan: Kata kunci dan urutan byte berasal dari karakteristik umum yang diamati dari berbagai teknologi pemasang.

Kecantikan
sumber
7

Jika Anda memiliki Visual Studio, Anda dapat melakukan hal berikut:

  1. Buka Visual Studio sebagai Administrator.
  2. Tekan Ctrl-O untuk membuka file
  3. Telusuri ke folder di mana Crimson Editor berada dan buka cedt.exe
  4. File dibuka menggunakan editor sumber daya dan Anda akan melihat pohon dengan cabang bernama RT_MANIFEST, perluas ini dan klik dua kali entri anak tunggal bernama "1 [Inggris Amerika Serikat]"
  5. Kira-kira tiga perempat jalan di kolom kanan Anda akan melihat tingkat yang dimintaExecutionLevel = "tertinggiTersedia", ubah "tertinggiTersedia" menjadi "sebagaiPasangan" (NB editor membuka dalam mode over-type secara default.
  6. Simpan file dan selesai.

HTH

Kevan

kevanb
sumber
4

Ada beberapa informasi tentang heuristik di sini: http://msdn.microsoft.com/en-us/library/aa905330.aspx

Manifes dapat membantu mengendalikan beberapa hal ini.

AaronLS
sumber
MSDN berbicara tentang "menanamkan" manifes. Bukankah itu dilakukan saat menyusun program? Apakah saya harus mengkompilasi Editor Crimson sendiri untuk mendapatkan manifes seperti itu di sana?
SealedSun
5
Anda dapat menambahkan file filename.exe.manifest di folder yang sama, dan Windows akan membacanya dengan tepat.
Factor Mystic