Назад | Перейти на главную страницу

Убедитесь, что пакет запускается с правами администратора

Мы используем командные файлы для простой установки COM-серверов - в основном, несколько копий файлов и regsvr32. Поскольку regsvr32 выполняет запись в куст локального компьютера реестра, пакет должен запускаться с правами администратора. Я хотел бы иметь возможность распознать, когда это не так, и сообщить пользователю, прежде чем установка завершится ошибкой.

Возможное решение - попытаться создать файл в system32, а затем проверить, существует ли он. Если да, то, скорее всего, у пользователя (всегда?) Также есть права на запись в реестр. В противном случае сообщите пользователю, что установка не удастся. Однако я не уверен, насколько точна проверка - я действительно не хочу иметь возможность создавать (а затем удалять) файлы в system32, просто установите COM-сервер. Есть ли способ лучше?

Проблема чаще всего встречается в Windows 7 и 2008 - если есть решение, которое будет работать только для них, пусть будет так. Однако я хотел бы продолжать использовать простые командные файлы.

Почему бы не попробовать что-нибудь безобидное, например:

%SystemRoot%\System32\net.exe file | %SystemRoot%\System32\findstr /l /c:"Access is denied."
if %ERRORLEVEL% NEQ 0 (
echo Not an admin.
exit
)