Блог - Как открыть командную строку от имени администратора в нужной папке

Ответить
Аватара пользователя
Vadikan

Блог - Как открыть командную строку от имени администратора в нужной папке

Сообщение Vadikan »

Мы открываем командную строку, чтобы выполнить какую-либо команду. Когда программа или скрипт находятся за пределами известного системе расположения (они перечислены в переменной PATH), приходится вводить полный путь к ним. Запуск командной строки в нужной папке позволяет сэкономить время на вводе...Изображение



Читать дальше в блоге...




Это сообщение создано автоматически.
Аватара пользователя
Admiral

Re: Блог - Как открыть командную строку от имени администратора в нужной папке

Сообщение Admiral »

Самым быстрым способом был бы Drag & Drop в командную строку исполнительного файла, который требуется запустить. Но в Виста и Севен проделать данную манипуляцию с консолью, запушенного от имени другого пользователя, нельзя.


>';}else{ div.style.display = 'none'; this.innerHTML = 'В Висте и с консолью текущего пользователя этого проделать тоже нельзя.>>';} return false">В Висте и с консолью текущего пользователя этого проделать тоже нельзя.>>


И как заявляли в свое время это By Design. Однако как оказалось для текущего пользователя всё же можно обойти, посредством утилит работающих по принципу "напечатать в консоли путь к файлу который передан мне в качестве первого параметре командной строки ". Другими словами: перетянув на ярлык/сам исполнительный файл такой утилиты любой файл получаем в запушенной ранее консоли его путь.


Вот примитивная версия такой программы (собирается батником)




Код:

Код: Выделить всё

@echo off
SET FileName=SendToMyConsole
IF EXIST %FileName%.exe goto RunEXE
IF EXIST %FileName%.vb goto setNetVersion
echo Rem Start Code >%FileName%.vb
echo Imports System' >>%FileName%.vb
echo Imports System.Windows.Forms' >>%FileName%.vb
echo Imports System.Windows.Forms.SendKeys' >>%FileName%.vb
echo ' >>%FileName%.vb
echo Module Module1' >>%FileName%.vb
echo     Private Declare Auto Function GetDesktopWindow Lib "user32.dll" () As IntPtr' >>%FileName%.vb
echo     Declare Auto Function FindWindow Lib "USER32.DLL" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr' >>%FileName%.vb
echo     Declare Auto Function SetForegroundWindow Lib "USER32.DLL" (ByVal hWnd As IntPtr) As Boolean' >>%FileName%.vb
echo     Sub Main()' >>%FileName%.vb
echo         Dim HWND As IntPtr = FindWindow("ConsoleWindowClass", vbNullString)' >>%FileName%.vb
echo         If HWND ^ IntPtr.Zero Then' >>%FileName%.vb
echo             Dim theForegroundWindow As Boolean = SetForegroundWindow(HWND)' >>%FileName%.vb
echo             If theForegroundWindow = True Then' >>%FileName%.vb
echo                 SendWait(Command$())' >>%FileName%.vb
echo             End If' >>%FileName%.vb
echo         End If' >>%FileName%.vb
echo     End Sub' >>%FileName%.vb
echo End Module' >>%FileName%.vb
echo ' >>%FileName%.vb
REM End VbCode
:setNetVersion
if exist %SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\vbc.exe goto net40
if exist %SYSTEMROOT%\Microsoft.NET\Framework\v3.5\vbc.exe goto net35
if exist %SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\vbc.exe goto net20
echo Error: .NET Framework 4.0, 3.5, 3.0 or 2.0 required.
echo.
goto end
:net20
set VBC_PATH=%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727
goto compile
:net35
set VBC_PATH=%SYSTEMROOT%\Microsoft.NET\Framework\v3.5
goto compile
:net40
set VBC_PATH=%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319
goto compile
:compile
%VBC_PATH%\vbc %FileName%.vb /target:winexe
:RunEXE
%FileName%.exe
:end






Но это косвенный Drag & Drop[/i] в консоль.





В связи с этим вступлением вопрос: если какие-то утилиты позволяющие организовать Drag & Drop в административную консоль?

Как мне видится этот запрет связан с вопросами безопасности (кстати, а много ли было прецедентов с этой возможностью?), возможно по вопросу запрета "взаимодействия сервисов с рабочим столом".

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

Не попадалась ли такая?
Аватара пользователя
Vadikan

Re: Блог - Как открыть командную строку от имени администратора в нужной папке

Сообщение Vadikan »

Цитата Admiral:



Самым быстрым способом был бы Drag & Drop в командную строку исполнительного файла, который требуется запустить.
Блог - Как открыть командную строку от имени администратора в нужной папке




Гм... чтобы имя подставлялось при этом? Ну так можно открыть консоль озвученным тут способом, ввести первые 1-2 буквы файла и TAB нажать. Это быстрее, чем отдельно открывать консоль от имени администратора, а потом таскать в нее файл.




Цитата Admiral:



кстати, а много ли было прецедентов с этой возможностью?
Блог - Как открыть командную строку от имени администратора в нужной папке




Думаю, достаточно одного Изображение



Утилит не попадалось.
Аватара пользователя
Morpheus

Re: Блог - Как открыть командную строку от имени администратора в нужной папке

Сообщение Morpheus »

Drag&Drop в cmd начинает работать, если перезапустить explorer от имени админа.



Как мне представляется, это сильный удар по безопасности. Вы тоже так считаете? Изображение
Аватара пользователя
Vadikan

Re: Блог - Как открыть командную строку от имени администратора в нужной папке

Сообщение Vadikan »

Цитата Morpheus:



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




Нет, не считаю. Работу Drag&Drop при включенном UAC я
объяснял в блоге
. Там говорится, что не происходит повышения прав при перетаскивании из программ, запущенных с обычными правами, в программы, которые запущены с полными правами. И неважно, консоль это или блокнот. Поэтому создается ощущение, что перетаскивание не работает.




Цитата Morpheus:



если перезапустить explorer от имени админа
Блог - Как открыть командную строку от имени администратора в нужной папке




то все программы, запускаемые из него, будут выполняться с полными правами. И зачем это нужно? С тем же успехом можно отключать UAC. В данном же случае обе программы (проводник и консоль) запущены с полными правами, следовательно перетаскивание работает.



Опять же, перетаскивание будет работать из проводника. Но если уже запущен другой файловый менеджер с обычными правами, в полноправную консоль ничего не перетащится.
Аватара пользователя
Morpheus

Re: Блог - Как открыть командную строку от имени администратора в нужной папке

Сообщение Morpheus »

Цитата Vadikan:



то все программы, запускаемые из него, будут выполняться с полными правами.
Блог - Как открыть командную строку от имени администратора в нужной папке




Не докрутил, спасибо!


Цитата Vadikan:



С тем же успехом можно отключать UAC.
Блог - Как открыть командную строку от имени администратора в нужной папке




Это и подозревалось, запуск проводника от админа практически пробивает такую же дыру в безопасности, как и отключение UAC.


Цитата Vadikan:



И зачем это нужно?
Блог - Как открыть командную строку от имени администратора в нужной папке




Не нужно.
Аватара пользователя
Vadikan

Re: Блог - Как открыть командную строку от имени администратора в нужной папке

Сообщение Vadikan »

Morpheus, мы уже много говорили на тему UAC в рамках опроса
Блог - Включен ли у вас контроль учетных записей?
, так что я не буду повторяться. UAC - это не граница безопасности (защищенной зоны), потому что конечное решение принимает не система, а пользователь. Другое дело, что если UAC отключен, пользователь никогда не узнает, что вредоносное приложение запускается с полными правами.
Ответить

Вернуться в «Microsoft Windows 7»