Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° для чСловСчСского shadow ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅Π°Π΄ΠΌΠΈΠ½Π° ΠΊ RDP сСссиям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² WinServer 2012R2

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прСдприятия стала ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ: Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство посСщСний ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚ΠΎΠ² спСциалистами, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΈ ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠΎ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌΡƒ ПО, Π΄Π° ΠΈ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½Π½ΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Ρ‡Π°ΡΡ‚Π΅Π½ΡŒΠΊΠΎ Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ спСциалистов Π½Π΅ ТСлая Π²Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π² сам вопрос, ΠΌΠΎΠ» Β«ΠΏΡ€ΠΈΠ΄ΡƒΡ‚ β€” ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ β€” ΡΠ΄Π΅Π»Π°ΡŽΡ‚, Π° я ΠΏΠΎΠΊΠ° ΠΏΠΎΠΊΡƒΡ€ΡŽ/попью ΠΊΠΎΡ„Π΅ ΠΈ Ρ‚.ΠΏ.Β». ΠšΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΡ ΠΏΠΎ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρƒ ΠΏΡ€ΠΈ совмСстном доступС ΠΊ сСрвСру эффСктивнСС, Ссли ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ экран.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° для чСловСчСского shadow ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅Π°Π΄ΠΌΠΈΠ½Π° ΠΊ RDP сСссиям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² WinServer 2012R2

Π£ΠΆΠ΅ послС «изобрСтСния» нашСго вСлосипСда ΠΏΠΎΠ΄Π²Π΅Ρ€Π½ΡƒΠ»Π°ΡΡŒ вмСняСмая информация Π½Π° Ρ‚Π΅ΠΌΡƒ ΡΡ‚Π°Ρ‚ΡŒΠΈ: RDS Shadow – Ρ‚Π΅Π½Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ RDP сСссиям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Windows Server 2012 R2 ΠΈΠ»ΠΈ Π Π΅ΠΆΠΈΠΌ shadow Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² windows server ΠΈΠ»ΠΈ Π”Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠ΅ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ RDP-сСансами. ВсС ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ консоли, Π΄Π°ΠΆΠ΅ с элСмСнтами простого Π΄ΠΈΠ°Π»ΠΎΠ³Π°.

Вся излоТСнная Π½ΠΈΠΆΠ΅ информация ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ пСрСносит Π½Π΅Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ извращСния для получСния Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, изобрСтая Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ способы.
Π§Ρ‚ΠΎΠ±Ρ‹ Β«Π½Π΅ Ρ‚ΡΠ½ΡƒΡ‚ΡŒ ΠΊΠΎΡ‚Π° Π·Π° хвост», Π½Π°Ρ‡Π½Ρƒ с послСднСго: вСлосипСд Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρƒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ AdmiLink, Π·Π° Ρ‡Ρ‚ΠΎ Π΅Π΅ Π°Π²Ρ‚ΠΎΡ€Ρƒ ΠΈ спасибо.

I. Консоль и shadow RDP.

Π’Π°ΠΊ ΠΊΠ°ΠΊ использованиС с админскими ΠΏΡ€Π°Π²Π°ΠΌΠΈ консоли Server Manager -> QuickSessionCollection -> Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² ΠΏΠΎ сСссии ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²Ρ‹Π±Ρ€Π°Π² Π² контСкстном мСню Shadow (ВСнСвая копия) для пСрсонала, ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с ПО, β€” Π½Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π±Ρ‹Π» рассмотрСн Π΄Ρ€ΡƒΠ³ΠΎΠΉ «дСрСвянный» способ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

1. УзнаСм RDP id сСссии:

query user | findstr Administrator

ΠΈΠ»ΠΈ:

qwinsta | findstr Administrator 

ΠŸΡ€ΠΈΡ‡Π΅ΠΌ "| findstr Administrator" Π±Ρ‹Π»ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ‹ знаСшь, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Administrator Ρ‚Π΅Π±Π΅ Π½ΡƒΠΆΠ΅Π½, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ для лицСзрСния всСх Π·Π°Π»ΠΎΠ³ΠΈΠ½ΠΈΠ²ΡˆΠΈΡ…ΡΡ Π½Π° сСрвСрС.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° для чСловСчСского shadow ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅Π°Π΄ΠΌΠΈΠ½Π° ΠΊ RDP сСссиям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² WinServer 2012R2

2. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΊ этой сСссии, ΠΏΡ€ΠΈ условии Ρ‡Ρ‚ΠΎ Π² Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ «УстанавливаСт ΠΏΡ€Π°Π²ΠΈΠ»Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ управлСния для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… сСансов слуТб ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… столов» Π²Ρ‹Π±Ρ€Π°Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ «НаблюдСниС Π·Π° сСансом с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΒ» (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅):

mstsc /shadow:127

ΠŸΡ€ΠΎΡˆΡƒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ Π² спискС Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΎΠ³ΠΈΠ½Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡŽΡΡŒ Ρ‡Ρ‚ΠΎ Π±Π΅Π· админских ΠΏΡ€Π°Π² Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° для чСловСчСского shadow ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅Π°Π΄ΠΌΠΈΠ½Π° ΠΊ RDP сСссиям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² WinServer 2012R2

Но для ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ, я использовал ΡƒΡ‡Π΅Ρ‚ΠΊΡƒ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора.

II. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

Π˜Ρ‚Π°ΠΊ постановка Π·Π°Π΄Π°Ρ‡ΠΈ: созданиС Π½Π΅ΠΊΠΎΠ³ΠΎ простого графичСского интСрфСйса для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Ρ‚Π΅Π½Π΅Π²ΠΎΠΌΡƒ сСнсу ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Π‘Ρ€Π΅Π΄Π° программирования Π²Ρ‹Π±Ρ€Π°Π½Π° Lazarus.

1. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹ΠΉ список ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Β«Π»ΠΎΠ³ΠΈΠ½Β» β€” Β«ΠΏΠΎΠ»Π½ΠΎΠ΅ имя» Ρƒ Π°Π΄ΠΌΠΈΠ½Π°, Π»ΠΈΠ±ΠΎ ΠΎΠΏΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· консоль:

wmic useraccount get Name,FullName 

Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Π΄Π°ΠΆΠ΅ Ρ‚Π°ΠΊ:

wmic useraccount get Name,FullName > c:testusername.txt

Π‘ΠΊΠ°ΠΆΡƒ сразу, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρƒ Lazarus оказалось ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ этого Ρ„Π°ΠΉΠ»Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΅Π³ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° UCS-2, поэтому ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ просто ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ UTF-8. Π’ структурС Ρ„Π°ΠΉΠ»Π° ΠΌΠ½ΠΎΠ³ΠΎ табуляций, Π²Π΅Ρ€Π½Π΅Π΅ мноТСство ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ всС-Ρ‚Π°ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π·Π°Π΄Π°Ρ‡ΠΊΠ° с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½Π°, ΠΈ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ.

Π˜Ρ‚Π°ΠΊ, Π² Π·Π°Π΄ΡƒΠΌΠΊΠ΅ ΠΏΠ°ΠΏΠΊΠ°, доступная для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ c:test, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ 2 Ρ„Π°ΠΉΠ»Π°: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ с login ΠΈ fullname, Π²Ρ‚ΠΎΡ€ΠΎΠΉ с id_rdp ΠΈ login ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π”Π°Π»Π΅Π΅ эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΠΌ:).

А ΠΏΠΎΠΊΠ° для ассоциирования со списком сСссий пСрСносим это (login ΠΈ fullname) содСрТимоС Π² массив:

procedure Tf_rdp.UserF2Array;
var 
  F:TextFile;   i:integer;   f1, line1:String;   fL: TStringList;
begin //f_d Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ² 
f1:=f_d+'user_name.txt';     //Π·Π°Π΄Π°Ρ‡Π° ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² массив содСрТимоС Ρ„Π°ΠΉΠ»Π°
fL := TStringList.Create; // строку ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π½Π΅ΠΌ ΠΌΠ΅Ρ‚Π°ΠΌΠ°Ρ€Ρ„ΠΎΠ·Π°ΠΌ с раздСлитСлями
fL.Delimiter := '|'; fL.StrictDelimiter := True;
AssignFile(F,f1); 
try // ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» для чтСния
  reset(F); ReadLn(F,line1);
  i:=0;
while not eof(F) do // Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ строки, ΠΏΠΎΠΊΠ° Π½Π΅ закончится Ρ„Π°ΠΉΠ»
begin
ReadLn(F,line1);
line1:= StringReplace(line1, '  ', '|',[]); //замСняСм ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ попавш.2ΠΏΡ€ΠΎΠ±Π΅Π»Π° Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ |
// удаляСм всС Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹
while pos('  ',line1)>0 do line1:= StringReplace(line1, '  ', ' ', [rfReplaceAll]);
begin
if (pos('|',line1)>0) then
begin //Ссли Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ сущСствуСт заносим Π΅Π³ΠΎ Π² массив
fL.DelimitedText :=line1; // Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ Π½Π° столбцы
if (fL[0]<>'') then //Ссли ΡƒΡ‡Π΅Ρ‚ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ имя
begin //вносим СС в массив
 inc(i); // избавляСмся ΠΎΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π² Π»ΠΎΠ³ΠΈΠ½Π΅
 fam[0,i]:=StringReplace(fL[1],' ','',[rfReplaceall, rfIgnoreCase]);
 fam[1,i]:=fL[0];
 end;end;end;end; // Π“ΠΎΡ‚ΠΎΠ²ΠΎ. Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ».
 CloseFile(F);
 Fl.Free;
 except
 on E: EInOutError do  ShowMessage('Ошибка ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Π°ΠΉΠ»Π°. Π”Π΅Ρ‚Π°Π»ΠΈ: '+E.Message);
 end;end;

ΠŸΡ€ΠΎΡˆΡƒ извинСния Π·Π° Β«ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°Β», ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Π΅Π΅.

2. Аналогично ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° считываСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ списка Π² элСмСнт StringGrid, ΠΏΡ€ΠΈ этом ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Β«Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉΒ» кусок ΠΊΠΎΠ΄Π°:

2.1 ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ список RDP сСссий Π² Ρ„Π°ΠΉΠ»:

f1:=f_d+'user.txt';
cmdline:='/c query user >'+ f1;
if ShellExecute(0,nil, PChar('cmd'),PChar(cmdline),nil,1)=0 then;
Sleep(500); // ΠΌΠΎΠΆΠ½ΠΎ ΠΈ подольшС ΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠΎΠΊΠ° Ρ„Π°ΠΉΠ» для чтСния создаСтся

2.2 ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» (ΡƒΠΊΠ°Π·Π°Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ строки ΠΊΠΎΠ΄Π°):

StringGrid1.Cells[0,i]:=fL[1]; StringGrid1.Cells[2,i]:=fL[3]; //ΠΊΠΈΠ΄Π°Π΅ΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅ Π² StringGrid1
login1:=StringReplace(fL[1],' ','',[rfReplaceall, rfIgnoreCase]); //ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΈΠ· Π»ΠΎΠ³ΠΈΠ½Π° ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹
if (SearchArr(login1)>=0) then //ΠΈΡ‰Π΅ΠΌ Π² массивС ΠΈΠ· ΠΏ1. Π»ΠΎΠ³ΠΈΠ½ ΠΈ записываСм Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ЀИО
StringGrid1.Cells[1,i]:=fam[1,SearchArr(login1)]
else StringGrid1.Cells[1,i]:='+'; // Π»ΠΈΠ±ΠΎ записываСм плюсик:)
.... //Π² зависимости ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ сортируСм ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ
if (b_id.Checked=true) then SortGrid(0) else SortGrid(1);
StringGrid1.AutoSizeColumn(0);StringGrid1.AutoSizeColumn(1); StringGrid1.AutoSizeColumn(2);  

3. НСпосрСдствСнно само ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° строку с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Π΅Π³ΠΎ сСанса:

  id:=(StringGrid1.Row);// ΡƒΠ·Π½Π°Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ€ строки  IntToStr(StringGrid1.Row)
  ids:=StringGrid1.Cells[2,id]; //ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ rdp
  cmdline:='/c mstsc /shadow:'+ ids; //ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ....
 if (b_rdp.Checked=True) then  if ShellExecute(0,nil, PChar('cmd'),PChar(cmdline),nil,1) =0 then;       

4. Π‘Π΄Π΅Π»Π°Π½ΠΎ Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Ρƒ ΡƒΠΊΡ€Π°ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π² Ρ‚ΠΈΠΏΠ° сортировки ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ Π½Π° radiobutton, ΠΈ сообщСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Π»ΠΈΠ±ΠΎ всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° для чСловСчСского shadow ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅Π°Π΄ΠΌΠΈΠ½Π° ΠΊ RDP сСссиям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² WinServer 2012R2

β†’ ΠŸΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ здСсь

III. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ AdminLink β€” Ρ‡Ρ‚ΠΎ я ΡƒΠ²ΠΈΠ΄Π΅Π»:

AdminLink Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ярлык, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ссылаСтся Π½Π° располоТСниС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ admilaunch.exe, ΠΈ Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ запуска AdmiRun.Exe которая находится Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ vasya, ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ C:UsersvasyaWINDOWS. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π½Π΅ всС Ρ‚Π°ΠΊ ΠΏΠ»ΠΎΡ…ΠΎ: с ΠΏΡ€Π°Π²Π°ΠΌΠΈ доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ярлыка ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ, для очищСния собствСнной админской совСсти, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒΡΡ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ