У меня есть пакетный файл, который переименовывает файл в папке, используя:

rename filename.exe filename.bac

Это хорошо работает в Win XP. Но в Vista/ 7, если командный файл запускается в Program Files/, он не переименовывает файл, если я не запускаю его от имени администратора. Есть ли способ обойти UAC и использовать его без необходимости запуска от имени администратора?

Благодарю.

3 ответа3

1

Изменение папок и файлов в каталоге program files требует повышения прав, даже если вы вошли в систему как администратор. Есть несколько возможных решений вашей проблемы:

  • Всегда повышайте пакетный файл при запуске. Если оно используется в качестве запланированной задачи, вы можете установить флажок Run this task with highest privileges .

  • Используйте скрипт Powertoy для Windows Vista/7 Elevation, чтобы поднять только эту команду

  • Измените разрешения в этом конкретном подкаталоге program files чтобы обычные пользователи могли переименовывать файлы

    Для этого перейдите в каталог с файлом, который вы будете переименовывать. Щелкните правой кнопкой мыши папку и выберите « Properties . Перейдите на вкладку безопасности. Нажмите кнопку advanced , а затем Change Permissions Нажмите « Add и выберите учетную запись, в которой будет запущен пакетный файл. Предоставьте этой учетной записи необходимые разрешения - возможно, create files и delete files как минимум. Затем нажмите OK однако много раз вам нужно закрыть все диалоги. Указанная учетная запись теперь сможет изменять файлы в этой папке без необходимости повышения.

  • Отключить UAC. Это не рекомендуется , так как это делает вашу систему уязвимой

1

Если вы когда-либо работали с Linux, вы заметите, что даже если вы являетесь администратором, вы не сможете делать все, что хотите, без повышения прав. Та же концепция применяется к UAC. Даже если вы вошли в систему как администратор, вы по умолчанию работаете со стандартными привилегиями пользователя. Так что нет, вы не можете просто вносить изменения в системные файлы (например, в каталог программных файлов) - это именно то, что нужно предотвратить UAC.

Вы можете отключить UAC, если вы действительно этого хотите, но это потенциальная угроза безопасности.

0

Взгляните на инструмент поднять

http://technet.microsoft.com/en-us/magazine/2007.06.utilityspotlight.aspx

Я использовал этот инструмент для запуска различных пакетных файлов, которые обычно требуют запуска в приглашении администратора. Оказывается, если вы передадите глагол "runas" либо API-интерфейсу ShellExecute, либо его эквиваленту в COM, метод ShellExecute в Shell.Приложение, запущенное приложение будет запрашивать повышение прав. Этот инструмент (который состоит из файлов ElevateCommand.inf, elevate.cmd и elevate.vbs) добавляет команду elevate в вашу систему. Это позволяет запускать приложения, запрашивающие повышение прав из командной строки, сценария или диалогового окна "Выполнить". Например, следующая команда открывает Win.ini с помощью Блокнота (после запроса на повышение прав):

elevate notepad c:\Windows\Win.ini

При использовании команды elevate с Windows Script Host (WSH), Windows PowerShell ™ или другими сценариями необходимо указать исполняемый файл узла сценария (например, wscript, cscript или powershell) в качестве приложения. Например, чтобы запустить VBS, вы должны использовать это:

elevate wscript “C:\windows\system32\slmgr.vbs” –dli

Текст справки объясняет это. Используйте поднять с -? или без параметров, чтобы увидеть текст справки.

Следующим раздражающим фактором было отсутствие опции контекстного меню "Запуск от имени администратора" (при щелчке правой кнопкой мыши по файлу в проводнике) для большинства типов сценариев Windows. Единственное исключение было для сценариев командной оболочки (с расширениями .bat и .cmd). Поэтому я решил исследовать это. Многие параметры контекстного меню для типов файлов управляются с помощью командных клавиш для типа "объект" в разделе HKEY_CLASSES_ROOT реестра (подробности см. В разделе Глаголы и ассоциации файлов на боковой панели). Оказывается, что если этот командный ключ называется runas, вызванная команда запросит повышение прав.

Поднять HTML-приложение PowerToy (ElevateHTA.inf)

Поднять Windows PowerShell Script PowerToy (ElevatePowerShellScript.inf)

Elevate WSH Script PowerToy (ElevateWSHScript.inf, elevate.cmd, elevate.vbs)

Эти PowerToys добавляют пункт контекстного меню «Запуск от имени администратора обозревателя» для типов файлов HTA, Windows PowerShell и Windows Script Host соответственно. ElevateWSHScript.inf также добавляет пункт «Запуск от имени администратора с помощью командной строки». (Пожалуйста, прочтите примечание в ElevatePowerShellScript.inf перед его установкой.)

Обязательно распакуйте мощную игрушку в c:\Windows\System32, или, если вы поместите инструмент в другое место, добавьте каталог в переменную $ PATH, чтобы вы могли легко вызывать ее внутри пакетных сценариев.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .