Dari dalam file batch, saya ingin menguji apakah saya menjalankan dengan Administrator / hak istimewa yang ditinggikan.
Nama pengguna tidak berubah ketika "Jalankan sebagai Administrator" dipilih, jadi itu tidak berfungsi.
Jika ada perintah yang tersedia secara universal, yang tidak berpengaruh, tetapi memerlukan hak akses administratif, maka saya dapat menjalankannya dan memeriksa kode kesalahan untuk menguji hak istimewa. Sejauh ini, saya belum menemukan perintah seperti itu. Perintah yang saya temukan tampaknya mengembalikan satu kode kesalahan non-spesifik, yang dapat menunjukkan apa pun, dan mereka cenderung gagal karena berbagai alasan.
Saya hanya peduli dengan Windows 7, meskipun dukungan sistem operasi sebelumnya akan menyenangkan.
windows
command-line
cmd
Jeff
sumber
sumber
echo > somefile
ke direktori yang akan membutuhkan admin privs. itu akan menghasilkan file sebagai efek samping, tetapi Anda dapat memeriksa tabrakan dan membuat nama file unik sebagai solusinya.Jawaban:
TAMBAHAN : Untuk Windows 8 ini tidak akan berhasil; lihat jawaban yang sangat bagus ini sebagai gantinya.
Temukan solusi ini di sini: http://www.robvanderwoude.com/clevertricks.php
Dengan asumsi itu tidak berhasil dan karena kita berbicara tentang Win7 Anda dapat menggunakan yang berikut ini di Powershell jika itu cocok:
Jika tidak (dan mungkin tidak, karena Anda secara eksplisit mengusulkan file batch) maka Anda dapat menulis di atas dalam .NET dan mengembalikan kode keluar dari exe berdasarkan hasil untuk digunakan file batch Anda.
sumber
AT
tidak berfungsi di Windows 8, tetapi saya telah menemukan solusi yang lebih baik. Saya telah mempostingnya sebagai jawaban untuk pertanyaan lain, di sini: stackoverflow.com/questions/4051883/… .ping
menggantisleep
:)Trik ini hanya membutuhkan satu perintah: ketik
net session
di command prompt.Jika Anda BUKAN admin , Anda mendapatkan pesan akses ditolak.
Jika Anda ADALAH admin , Anda mendapatkan pesan yang berbeda, yang paling umum adalah:
Dari MS Technet :
sumber
There are no entries in the list.
di Windows 10 Pronet session >nul 2>&1 || (echo not admin&goto :eof)
Saya suka saran Rushyo untuk menggunakan AT, tetapi ini adalah opsi lain:
Pendekatan ini juga memungkinkan Anda untuk membedakan antara non-administrator dan administrator non-tinggi jika Anda menginginkannya. Administrator yang tidak ditinggikan masih memiliki BUILTIN \ Administrators dalam daftar grup tetapi tidak diaktifkan.
Namun, ini tidak akan berfungsi pada beberapa sistem bahasa non-Inggris. Sebaliknya, cobalah
(Ini seharusnya berfungsi pada Windows 7 tetapi saya tidak yakin tentang versi sebelumnya.)
sumber
whoami/groups
dan kemudian memindai baris secara manual. Tidak akan memakan waktu lama dan perintahnya pas di otak Anda.Cukup banyak apa yang orang lain telah letakkan sebelumnya, tetapi sebagai satu liner yang dapat diletakkan di awal perintah batch. (Yah, biasanya setelah @echo off.)
sumber
Cara termudah untuk melakukan ini di Vista, Win 7 dan yang lebih baru adalah menghitung grup token dan mencari tingkat integritas saat ini (atau sisi administrator, jika hanya keanggotaan grup yang penting):
Periksa apakah kami menjalankan peningkatan:
Periksa apakah kami milik administrator lokal:
Periksa apakah kami termasuk dalam admin domain:
Artikel berikut mencantumkan tingkat integritas SID yang digunakan windows: http://msdn.microsoft.com/en-us/library/bb625963.aspx
sumber
Berikut sedikit modifikasi dari jawaban Harry yang berfokus pada status yang lebih tinggi; Saya menggunakan ini di awal file install.bat:
Ini pasti berhasil bagi saya dan prinsipnya tampaknya masuk akal; dari MSFT Chris Jackson :
sumber
solusinya:
tidak berfungsi di bawah Windows 10
untuk semua versi Windows dapat melakukannya:
sumber
Saya membaca banyak (sebagian besar?) Tanggapan, kemudian mengembangkan file bat yang berfungsi untuk saya di Win 8.1. Kupikir aku akan membagikannya.
Semoga seseorang menemukan ini berguna :)
sumber
Versi "bukan-satu-satu" dari https://stackoverflow.com/a/38856823/2193477
sumber
Saya tahu saya sangat terlambat ke pesta ini, tapi inilah satu kalimat saya untuk menentukan admin-hood.
Itu tidak bergantung pada tingkat kesalahan, hanya pada
systeminfo
:Ini mengembalikan ya atau tidak, tergantung pada status admin pengguna ...
Ini juga menetapkan nilai variabel "admin" sama dengan ya atau tidak.
sumber
Jika Anda menjalankan sebagai pengguna dengan hak administrator maka variabel lingkungan SessionName TIDAK akan ditentukan dan Anda masih tidak memiliki hak administrator saat menjalankan file batch.
Anda harus menggunakan perintah "sesi bersih" dan mencari kode kesalahan kembali "0" untuk memverifikasi hak administrator.
Contoh; - Pernyataan gema pertama adalah karakter bel
net session >nul 2>&1 if not %errorlevel%==0 (echo echo You need to start over and right-click on this file, echo then select "Run as administrator" to be successfull. echo.&pause&exit)
sumber
Berikut adalah metode sederhana yang saya gunakan pada Windows 7 hingga Windows 10. Pada dasarnya, saya cukup menggunakan perintah "JIKA ADA" untuk memeriksa folder Windows \ System32 \ WDI \ LogFiles. Folder WDI ada di setiap penginstalan Windows setidaknya dari 7 dan seterusnya, dan memerlukan hak admin untuk mengakses. Folder WDI selalu memiliki folder LogFiles di dalamnya. Jadi, menjalankan "JIKA ADA" di folder WDI \ LogFiles akan mengembalikan nilai true jika dijalankan sebagai admin, dan false jika tidak dijalankan sebagai admin. Ini dapat digunakan dalam file batch untuk memeriksa tingkat hak istimewa, dan bercabang ke perintah mana pun yang Anda inginkan berdasarkan hasil itu.
Berikut cuplikan singkat kode contoh:
Ingatlah bahwa metode ini mengasumsikan izin keamanan default belum diubah di folder WDI (yang tidak mungkin terjadi di sebagian besar situasi, tetapi harap lihat peringatan # 2 di bawah). Bahkan dalam kasus itu, itu hanya masalah memodifikasi kode untuk memeriksa file / folder umum yang berbeda yang memerlukan akses admin (System32 \ config \ SAM mungkin merupakan kandidat alternatif yang baik), atau Anda bahkan dapat membuatnya sendiri khusus untuk itu tujuan.
Ada dua peringatan tentang metode ini:
Menonaktifkan UAC kemungkinan akan memecahkannya melalui fakta sederhana bahwa semuanya akan tetap dijalankan sebagai admin.
Mencoba membuka folder WDI di Windows Explorer dan kemudian mengklik "Lanjutkan" saat diminta akan menambahkan hak akses permanen untuk akun pengguna tersebut, sehingga merusak metode saya. Jika ini terjadi, dapat diperbaiki dengan menghapus akun pengguna dari izin keamanan folder WDI. Jika karena alasan apa pun pengguna HARUS dapat mengakses folder WDI dengan Windows Explorer, maka Anda harus mengubah kode untuk memeriksa folder lain (seperti yang disebutkan di atas, membuat sendiri secara khusus untuk tujuan ini mungkin merupakan pilihan yang baik) .
Jadi, memang metode saya tidak sempurna karena dapat dipecahkan, tetapi ini adalah metode yang relatif cepat yang mudah diterapkan, sama-sama kompatibel dengan semua versi Windows 7, 8 dan 10, dan asalkan saya tetap memperhatikan peringatan yang disebutkan. 100% efektif untuk saya.
sumber
Bekerja untuk Win7 Enterprise dan Win10 Enterprise
sumber