Kamis, 20 Oktober 2016

Membuat Program Meminta Izin Run As Administrator Otomatis


Program yang ingin mengakses beberapa fungsi internal sistem sepertinya tak berkutik ketika tidak memiliki wewenang untuk melakukannya. Program ini harus berjalan sebagai administrator untuk melakukan sesuatu berkenaan dengan internal sistem. Contohnya, menghapus atau membuat file di system folder.

Beberapa program, secara otomatis akan meminta izin sebagai administrator ketika hendak dijalankan. Beberaoa yang lain menganjurkan kita untuk melakukan ini secara manual; klik kanan -> Pilih Run as administrator.


Apa sebenarnya yang membuat program tersebut dapat menghasilkan notifiksi permintaan izin otomatis?
Jawabannya adalah manifest. Manifest dapat digunakan untuk menampung beberapa metadata untuk program executable di Windows. Dengan manifest ini juga, kita bisa membuat program kita berjalan meminta izin administrator.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="nama_program" type="win32"/>
  <description>deskripsi_program</description>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>



Simpan kode di atas sebagai nama_program.exe.manifest.

Sekarang kita coba sebuah program sederhana
int main(){
     return 0;
}


Compile dan link sehingga nama exe program akhir serupa dengan nama file manifest yang telah dibuat.



Sekarang masalahnya, jika file manifest di rename, program tidak meminta izin secara otomatis lagi. Untuk mengatasi ini, kita perlu me-link manifest sebagai resource program kita.

Pertama, buat sebuah file lagi dengan nama "nama_program.rc". Anda bisa gunakan notepad atau text editor lainnya untuk ini. Di dalamnya, isikan kode berikut.

1 24 "nama_program.exe.manifest"

Compile ke file object
windres test.rc -o test_resource.o

Compile juga source C di tas tadi ke file object
gcc -c test.c

Sekarang link kedua object
gcc test.o test_resource.o -o test.exe


Sekarang, program akan meminta izin admin tanpa file manifest.

FYI: windres hadir bersama GCC. Jika anda menggunakan IDE codeblocks atau codelite, bahkan lebih mudah lagi. Tinggal include file rc ke project dan Codeblocks akan mengetahuinya dan mengompile program anda bersama resource secara otomatis.
Load disqus comments

0 comments