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 runas
bu 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 ( start
takma addır Start-Process
):
Start-Process -Verb "runas" notepad C:\Windows\System32\drivers\etc\hosts
Buradaki numara, fiili geçiyor ve runas
UAC'yi tetikliyor.
Ne Start-Process -Verb runas
standart cmd ne de o runas
anki ç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 runas
ve orada daha da kötüdür çünkü doğru kullanıcının değişkenlerini bile alamazsınız.