Ben Gripka'nın çözümü sonsuz döngülere neden oluyor. Onun toplu iş böyle çalışır (sözde kod):
IF "no admin privileges?"
"write a VBS that calls this batch with admin privileges"
ELSE
"execute actual commands that require admin privileges"
Gördüğünüz gibi, VBS yönetici ayrıcalıkları istemezse bu sonsuz bir döngüye neden olur.
Bununla birlikte, yönetici ayrıcalıkları başarıyla istendi, ancak sonsuz döngü oluşabilir.
Ben Gripka'nın toplu iş dosyasındaki check sadece hataya açıktır. Parti ile oynadım ve kontrol başarısız olmasına rağmen yönetici ayrıcalıklarının mevcut olduğunu gözlemledim. İlginç bir şekilde, toplu iş dosyasını Windows Gezgini'nden başlatırsam, beklendiği gibi çalıştı, ancak IDE'imden başlattığımda olmadı.
Bu yüzden iki ayrı toplu iş dosyası kullanmanızı öneririm. Birincisi, ikinci toplu iş dosyasını çağıran VBS'yi oluşturur:
@echo off
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/c ""%~dp0\my_commands.bat"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
"My_commands.bat" adlı ve birinciyle aynı dizinde bulunan ikincisi gerçek komutlarınızı içerir:
pushd "%CD%"
CD /D "%~dp0"
REM Your commands which require admin privileges here
Bu sonsuz döngüye neden olmaz ve hataya açık yönetici ayrıcalık denetimini de kaldırır.