saurabh.15in Ответов: 1

Вам ввод команды в окне оболочки


Привет,

Я пытаюсь получить команду ввода из окна оболочки (а не результат вывода). Ниже приведен сценарий.
Я пытаюсь получить эту информацию с помощью C#, но если это невозможно с помощью C#, то любой другой язык, такой как C/C++, также будет работать.

1 - пользователь вводит некоторую команду в окне оболочки.
Команда типа dr/cd/mkdir и т. д
Окно оболочки, как командная строка/ PowerShell
2 - всякий раз, когда пользователь нажимает enter, захватите команду, которую он выполнил, и зарегистрируйте ее.
3 - Мне нужен последовательный подход, который работает на всех окнах оболочки. Кроме cmd и powershell, может быть больше окон оболочки.

Что я уже пробовал:

1 - я попробовал использовать клавиатурное нажатие. Используя нажатие клавиатуры, я могу захватывать ключевые детали, но пользователь может использовать некоторые сочетания клавиш. так что это не сработает

2-попытка получить данные из заголовка окна. Это работает для командной строки, но не с powershell.

3 - попробовал оконный API типа "getWindowText", но он дает название окна. Я полагаю ,что есть тысячи WinAPI. Если кто-то может сузить круг вопросов, дайте некоторое предложение по методам WinAPI. Это тоже сработает

Пожалуйста, помогите !!

johannesnestler

Я не думаю, что это сработает - никакая функция Windows-API здесь не поможет. Ведение журнала Ключей с помощью глобального крючка, мониторинг целевого приложения (оболочки) и знание возможных ярлыков, которые есть у каждого целевого приложения, могут в какой-то степени работать. В любом случае - мне было бы просто интересно, какая выгода или функция стоит за вашим требованием? На данный момент я не могу себе представить никакого использования для такого регистратора всех "команд" для всех приложений типа оболочки. То, что вы делаете потом с записанными командами - они всегда будут специфичны для конкретного приложения.... так что бесполезно без дальнейшего знания оболочки и ее команд. Может быть, кто-то поможет, если вы опишете свою цель?

saurabh.15in

Я пытаюсь создать тип диктофона. Но заботясь о том, чтобы рекордер не захватывал конфиденциальные данные.
Так могу ли я предположить,что это невозможно?

1 Ответов

Рейтинг:
2

Jochen Arndt

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

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

[РЕДАКТИРОВАТЬ]

Цитата:
Я пытаюсь создать тип диктофона. Но заботясь о том, чтобы рекордер не захватывал конфиденциальные данные.
Так могу ли я предположить,что это невозможно?

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

В окне командной строки нажмите клавишу F7. Откроется окно с историей, и вы можете открыть контекстное меню, чтобы выбрать все и скопировать его в буфер обмена.

С использованием PowerShell Get-История[^] чтобы показать историю и при необходимости сохранить ее в файл.

Таким образом, вы можете попытаться отправить соответствующие нажатия клавиш в эти окна (см. Как смоделировать события мыши и клавиатуры в коде | Microsoft Docs[^]) и получить данные из буфера обмена соответственно. сохранение файлов. Но я не уверен, что это работает для этих приложений командной строки.
[/РЕДАКТИРОВАТЬ]


saurabh.15in

Я пытаюсь создать тип диктофона. Но заботясь о том, чтобы рекордер не захватывал конфиденциальные данные.
Так могу ли я предположить,что это невозможно?

Jochen Arndt

Смотрите мой обновленный ответ.