Как я могу проверить действующие разрешения пользователя из пакетного скрипта? - PullRequest
1 голос
/ 25 октября 2011

Мне нужно проверить действующие разрешения для конкретного пользователя (т.е. не обязательно текущего пользователя) из пакетного сценария и предпринять действия (выдать предупреждение) на основании этого.Я хотел бы иметь подпрограмму, которую я мог бы вызвать, чтобы проверить привилегии для указанного файла или каталога, чтобы я мог проверить, что что-то, что только администратор должен иметь доступ (и, таким образом, предупредить, что предоставлены слишком высокие разрешения) и проверить эти данныекаталоги в пути к моим приложениям могут быть доступны (в противном случае слишком мало разрешений).Мне бы хотелось, чтобы это работало в XP, 2008 и win7.

Кстати, я разобрался, как разбирать «net localgroup Administrators», но я не думаю, что этого достаточно для моих нужд..

1 Ответ

2 голосов
/ 05 марта 2013

@ Джаред ,

Для ваших нужд, я думаю, с простой копией и % errorlevel% вы можете иметь то, что вы хотите.

copy %tempFile% %yourProtectedDir%
if %errorlevel% == 1 goto sorryYouFail
if %errorlevel% == 0 goto youAreIn
...
del %tempFile% /Q

Или, чтобы проверить любого пользователя, сделайте то же самое, но с папкой, защищенной Windows ...

copy %tempFile% %windir%\system32
if %errorlevel% == 1 goto youDontHaveAdminPrivileges
if %errorlevel% == 0 goto howdyThereAdmin
...
del %tempFile% /Q

Если вам нужно протестировать другого пользователя, попробуйте с помощью runas option ...

@ Lizz

Этот скрипт проверяет версию Windows и повышает временный файл для запуска определенного с правами ADMIN.

@echo off
title Detect and run file with Admin privileges

set yourFile=yourFileNameAsAdmin.bat
set privileges=no

VER | FINDSTR /IL "6.2." > NUL
IF %ERRORLEVEL% EQU 0 (
SET winVersion=8
SET privileges=yes
)

VER | FINDSTR /IL "6.1." > NUL
IF %ERRORLEVEL% EQU 0 (
SET winVersion=7
SET privileges=yes
)

VER | FINDSTR /IL "6.0." > NUL
IF %ERRORLEVEL% EQU 0 (
SET winVersion=Vista
SET privileges=yes
)

if "%privileges%"=="no" goto SkipElevation
If "%privileges%"=="yes" goto Elevation

:SkipElevation
call %CD%\%yourFile%
goto End

:Elevation
PushD "%~dp0"
If Exist "%~0.ELEVATED" Del /f "%~0.ELEVATED"

Set CMD_Args=%0 %*
Set CMD_Args=%CMD_Args:"=\"%
Set ELEVATED_CMD=PowerShell -Command (New-Object -com 'Shell.Application').ShellExecute('%yourFile%', '/%cd:~0,1% %CMD_Args%', '', 'runas')
Echo %ELEVATED_CMD% >> "%~0.ELEVATED"
call %ELEVATED_CMD%

Del /f "%~0.ELEVATED"
goto End

:End
Echo -------------------------------
Echo All done!
Pause
goto EOF

Примечание : Если yourFileNameAsAdmin.bat использовать RELATIVE-путь к файлам, не забудьте включить расширения и локальный каталог в начале файла:

@echo off
@setlocal enableextensions
@cd /d "%~dp0"
::...your code here

Надеюсь, это поможет! ...


Как информация, связанная с добавлением ...

С помощью команды net вы получаете много информации о пользователях и группах, а также можете работать с ними.

например,

NET USER

  • net users Список всех пользователей.
  • net users [имя] Подробная информация о конкретном пользователе, включая все группы, к которым он принадлежит .
  • net help users для получения дополнительной информации ...

NET LOCALGROUP

  • net localgroup Список всех групп.
  • net localgroup [groupName] Подробная информация о конкретной группе, , включая всех пользователей, принадлежащих к этой группе .
  • net help localgroup для более ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...