UncleFather » 22 июн 2012 11:06, Пт
Проблема:
В Windows 7 если просто запустить батник или другой командный (bat, com) файл от имени администратора, то он по-умолчанию всегда выполняется из папки %systemroot%\system32, а не из папки, где непосредственно лежит этот файлик.
Поэтому, если нам заранее неизвестно где этот файлик будет лежать, мы не сможем создать в этом командном файле ссылки на папку (например, не сможем скопировать что-либо из этой папки или в эту папку).
Если запускать командный файл с обычными правами текущего пользователя, то он будет запускаться нормально именно из той папки, в которой лежит.
Попытка создать ярлык на bat файл с указанием рабочего каталога ни к чему не приводит - административный запуск игнорирует все настройки.
Так как же запустить командный файл от имени Администратора так, чтобы он запустился из папки, где лежит этот командный файл?
Решение:
В первой строке командного файла меняем текущий диск, во второй - текущий путь на диск и путь из которых запущен командный файл:
А дальше уже пишем обычный код командного файла.
[size=150][b]Проблема:[/b][/size]
В Windows 7 если просто запустить батник или другой командный (bat, com) файл от имени администратора, то он по-умолчанию всегда выполняется из папки [i][b]%systemroot%\system32[/b][/i], а не из папки, где непосредственно лежит этот файлик.
Поэтому, если нам заранее неизвестно где этот файлик будет лежать, мы не сможем создать в этом командном файле ссылки на папку (например, не сможем скопировать что-либо из этой папки или в эту папку).
Если запускать командный файл с обычными правами текущего пользователя, то он будет запускаться нормально именно из той папки, в которой лежит.
Попытка создать ярлык на bat файл с указанием рабочего каталога ни к чему не приводит - административный запуск игнорирует все настройки.
Так как же запустить командный файл от имени Администратора так, чтобы он запустился из папки, где лежит этот командный файл?
[size=150][b]Решение:[/b][/size]
В первой строке командного файла меняем текущий диск, во второй - текущий путь на диск и путь из которых запущен командный файл:
[code]%~d0
cd /D "%~p0"[/code]
А дальше уже пишем обычный код командного файла.