Oke, alasan mengapa ini tidak berhasil adalah model keamanan di Windows Vista dan yang lebih baru. Akun di grup administrator masih menjalankan semua yang tidak secara eksplisit ditingkatkan sebagai pengguna terbatas. Pengecualiannya adalah Administratorakun, yang menjalankan semuanya naik tinggi. Karena alasan ini, biasanya dianggap buruk untuk digunakan sebagai akun login Anda, dan biasanya dinonaktifkan.
Anda dapat mengaktifkannya dan kemudian runasmemohon sebagai akun itu. Itu menimbulkan beberapa masalah - sekarang Anda menjalankan dengan lingkungan pengguna yang berbeda, yang dapat mengatur variabel lingkungan yang berbeda. 1
Cara yang lebih baik untuk melakukan ini akan benar-benar meningkat sebagai pengguna Anda saat ini melalui UAC. Sayangnya, command prompt standar tidak termasuk kemampuan itu - tetapi kedua program pihak ketiga dan PowerShell dan WSHell (VBScript) yang built-in dapat melakukannya.
Meminjam dari jawaban saya yang lain , Anda dapat menjalankan perintah PowerShell secara langsung dengan powershell -c:
powershell -c start -verb runas notepad C:\Windows\System32\drivers\etc\hosts
yang pada dasarnya memberitahu PowerShell untuk menjalankan yang berikut ( startalias Start-Process):
Start-Process -Verb "runas" notepad C:\Windows\System32\drivers\etc\hosts
Kuncinya di sini adalah melewati kata kerja runas, memicu UAC.
Baik Start-Process -Verb runascmd standar tidak runasakan melewati direktori kerja saat ini , jadi selalu gunakan path lengkap dalam perintah apa pun yang Anda tingkatkan dengan cara ini.
Perhatikan juga bahwa beberapa argumen seperti -cmungkin berbenturan dengan Start-Processargumen, jadi cara teraman adalah:
powershell "-c start -verb runas commandname -argumentlist 'arg1 arg2'"
1 Catatan: ini hanya berlaku untuk variabel lingkungan pengguna . Variabel lingkungan yang Anda atur dalam proses induk tidak diteruskan oleh UAC ! Ini juga berlaku untuk runas, dan bahkan lebih buruk di sana karena Anda bahkan tidak akan mendapatkan vars pengguna yang benar.