Что нового

[Сеть, интернет] Как программно определить: скрипт работает из-под RDP или под реальным юзером?

akoulev

Новичок
Сообщения
169
Репутация
2
Идейка, в общем-то, имеется: при клике на самую главную кнопку :smile: "Пуск", - там названия кнопок разные: для случая работы из-под RDP (Красная кнопка-рубильник именуется "Отключение") и для случая работы под реальным юзером (Красная кнопка-рубильник именуется "Завершение работы"). Но я не могу отделаться от ощущения, что можно это сделать и как-то ... поэлегантнее, что ли.

Есть ли у кого-либо идеи по данному вопросу?

ЗЫ: (Перечитав) Если, вдруг, это неочевидно: во фразе "скрипт работает из-под RDP" я имел в виду, что подключаюсь к другой машине по RDP, и уже там запускаю скрипт. И было бы здорово, если бы оный скрипт умел разбираться: запущен ли он живым юзером, сидящим за клавиатурой - или же он запущен по 4-м проводочкам ethernet.
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
OffTopic:
Может через пользователя ? не знаком с RDP но как я понимаю пользователь там другой (всмысле LOGIN отличаеться от локального (реального) пользователя или?!) через проверку пользователя который пытается "выключить компьютер" или "завершить работу" кому как удобнее


Если так то думаю может через
Код:
@UserName
?!
или RDP подключается и работает с тем же и под тем же профилем что запущен изначально (был включен компьютер)?!
 
Автор
A

akoulev

Новичок
Сообщения
169
Репутация
2
Guezt Gutsy сказал(а):
... или RDP подключается и работает с тем же и под тем же профилем что запущен изначально (был включен компьютер)?!
Именно. Спасибо за идею: поскольку отрицательный результат - тоже результат. :smile:

Код:
$ABC=@UserName
MsgBox(0,"" ,$ABC,2)

Данный скрипт выдаёт абсолютно один и тот же результат: что по RDP, что с desktop-а. Можно было бы, конечно, приаттачить пару картинок; но, полагаю, достаточно просто мне поверить. :smile:
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
akoulev
а как на счет вернуть разрешение экрана ? вернет разрешение установленное в RDP или то что на компьютере ?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Попробуй так:

Код:
ConsoleWrite(_IsRDP() & @CR)

Func _IsRDP()

	Local $Ret = DllCall('user32.dll', 'int', 'GetSystemMetrics', 'int', 0x2001) ; SM_REMOTECONTROL

	If @error Then
		Return SetError(1, 0, 0)
	EndIf
	Return $Ret[0]
EndFunc   ;==>_IsRDP
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
Yashied
OffTopic:
Я плохо знаком с вызовом функций из *.dll файлов кое как нашел инфу по GetSystemMetrics но я так и не понял где брать индексы :(
 
Автор
A

akoulev

Новичок
Сообщения
169
Репутация
2
Yashied сказал(а):
Попробуй так:
...
Сделал так:
Код:
If _IsRDP() =0 Then
		MsgBox(0,"" ,"DeskTop" ,2)
	Else
		MsgBox(0,"" ,"RDP", 2)
	EndIf
Exit

Func _IsRDP()

    Local $Ret = DllCall('user32.dll', 'int', 'GetSystemMetrics', 'int', 0x2001) ; SM_REMOTECONTROL

    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    Return $Ret[0]
EndFunc   ;==>_IsRDP

Не пашет: Только "DeskTop" сообщает.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
akoulev
У меня заработал после смены 0x2001 на 0x1000
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
Yuriy сказал(а):
akoulev
У меня заработал после смены 0x2001 на 0x1000
Ну как я понимаю скрипт может быть запущен и на самом компе а в это время будет просто установлено соединение по RDP тоже как то не вариант. А предыдущий все же не работает скорее всего потому что запускается на локальной машине и там выполняет действия только вот ему все равно кто запустил его и потому наверное не работает.
 
Автор
A

akoulev

Новичок
Сообщения
169
Репутация
2
... скрипт может быть запущен и на самом компе а в это время будет просто установлено соединение по RDP тоже как то не вариант.
Ну, это уже тонкости, слабоинтереcные. :smile: Конкретно у нас так: "люминь - так люминь; чугуний - так чугуний" (с). Сиречь: я один мечусь между несколькими "машинами со скриптами", и, => если я не запущу скрипт, его (скорее всего :laugh:smile: никто не запустит.

... скрипт может быть запущен и на самом компе а в это время будет просто установлено соединение по RDP тоже как то не вариант. А предыдущий все же не работает скорее всего потому что запускается на локальной машине и там выполняет действия только вот ему все равно кто запустил его и потому наверное не работает.

Ох-хо-хо-хо-хонюшки... Offtopik on: Все мы - жертвы высшего образования. ;) 5-6 лет нас учили совершенно никчёмному занятию: узнавать "почему". Что является неотъемлемой задачей учёного, исследователя. Но! Не инженера. А инженеру абсолютно пофиг, ПОЧЕМУ не работает - инженера интересует ЧТО: не работает => ЧТО надо сделать, чтобы работало. Можно, конечно, сказать, что для установления причины "неработы" и нужно выяснить "почему"... Но, на мой взгляд, это уже демагогия. Не работает - "ф топку". ;) Offtopik off.

Да какая разница, _почему_ не работает: не работает => "ф топку". ;|



Добавлено:
Сообщение автоматически объединено:

Yuriy сказал(а):
akoulev
У меня заработал после смены 0x2001 на 0x1000
И у меня заработал. Всем спасибо; тема закрыта.
 
Верх