Tamam, bu işe yaramazsa nedeni , Windows Vista ve daha yeni bir güvenlik modelidir. Yöneticiler grubundaki bir hesap hala sınırlı bir kullanıcı olarak açıkça yükseltilmeyen her şeyi çalıştırır. İstisna, her şeyi yükseltilmiş olarak Administratorçalıştıran hesaptır . Bu nedenle, giriş hesabınız olarak kullanmanın genel olarak kötü olduğu kabul edilir ve normalde devre dışı bırakılır.
Bunu etkinleştirebilir ve ardından runasbu hesap olarak çağırmak için kullanabilirsiniz. Bu, birkaç problem ortaya çıkarır - şimdi, farklı ortam değişkenleri ayarlanmış olabilecek farklı bir kullanıcının ortamıyla çalışıyorsunuz. 1
Bunu yapmanın en iyi yolu, aslında UAC üzerinden şu anki kullanıcınız olarak yükselecektir. Ne yazık ki, standart komut istemi bu yeteneği içermez - ancak hem üçüncü taraf programları hem de yerleşik PowerShell ve WSHell (VBScript) bunu yapabilir.
Diğer cevabımdan ödünç alarak , PowerShell komutunu doğrudan şu şekilde çağırabilirsin powershell -c:
powershell -c start -verb runas notepad C:\Windows\System32\drivers\etc\hosts
temelde PowerShell'e aşağıdakini çalıştırmasını söyler ( starttakma addır Start-Process):
Start-Process -Verb "runas" notepad C:\Windows\System32\drivers\etc\hosts
Buradaki numara, fiili geçiyor ve runasUAC'yi tetikliyor.
Ne Start-Process -Verb runasstandart cmd ne de o runasanki çalışma dizinini geçemez , bu yüzden her zaman tam yolu bu şekilde yükselttiğiniz komutlarda kullanın.
Ayrıca, bazı argümanların argümanlarla -cçakışabileceğini Start-Process, bu nedenle en güvenli yolun:
powershell "-c start -verb runas commandname -argumentlist 'arg1 arg2'"
1 Not: bu sadece kullanıcının çevre değişkenleri için geçerlidir . Bir üst süreçte ayarladığınız ortam değişkenleri UAC tarafından iletilmez ! Bu aynı zamanda geçerlidir runasve orada daha da kötüdür çünkü doğru kullanıcının değişkenlerini bile alamazsınız.