Cyfleustodau ar gyfer cysylltiad cysgod dynol person nad yw'n weinyddwr â sesiynau defnyddwyr RDP yn WinServer 2012R2

Daeth y broblem yn ystod cyfnod cwarantîn y fenter fel a ganlyn: mae'n wirioneddol angenrheidiol lleihau nifer yr ymweliadau â swyddfeydd gan arbenigwyr sy'n gwasanaethu ac yn ymgynghori ar feddalwedd cymhwysiad, a siarad yn blwmp ac yn blaen, mae defnyddwyr yn aml yn cam-drin cymorth arbenigwyr heb fod eisiau ymchwilio i y mater ei hun, maen nhw’n dweud “byddan nhw’n dod - byddan nhw’n helpu - byddan nhw’n ei wneud, ond byddaf yn ysmygu / yfed coffi, ac ati.” Mae ymgynghori dros y ffôn wrth rannu gweinydd yn fwy effeithiol os edrychwch ar y sgrin bell.

Cyfleustodau ar gyfer cysylltiad cysgod dynol person nad yw'n weinyddwr â sesiynau defnyddwyr RDP yn WinServer 2012R2

Ar ôl “dyfeisio” ein beic, daeth gwybodaeth gall ar bwnc yr erthygl i fyny: Cysgodol RDS - cysylltiad cysgodol â sesiynau defnyddwyr RDP yn Windows Server 2012 R2 neu Modd cysgodol defnyddiwr difreintiedig yn y gweinydd ffenestri neu Dirprwyo rheolaeth sesiynau RDP. Mae pob un ohonynt yn cynnwys defnyddio consol, hyd yn oed gydag elfennau o ddeialog syml.

Mae'r holl wybodaeth isod wedi'i bwriadu ar gyfer y rhai sy'n yn goddef gwyrdroi annormal fel arfer i gael y canlyniad a ddymunir, gan ddyfeisio dulliau diangen.
Er mwyn peidio â “tynnu'r gath wrth ei chynffon”, dechreuaf gyda'r un olaf: mae'r beic yn gweithio i'r defnyddiwr cyffredin gan ddefnyddio'r cyfleustodau AdmiLink, am hynny diolch i'w hawdur.

I. Consol a RDP cysgodol.

Ers ei ddefnyddio gyda hawliau gweinyddwr y consol Rheolwr Gweinyddwr -> QuickSessionCollection -> trwy glicio ar sesiwn y defnyddiwr o ddiddordeb, gan ddewis Shadow o'r ddewislen cyd-destun i bersonél sy'n cyfarwyddo sut i ddefnyddio'r meddalwedd, ddim yn opsiwn, ystyriwyd dull “pren” arall, sef:

1. Darganfyddwch ID RDP y sesiwn:

query user | findstr Administrator

neu:

qwinsta | findstr Administrator 

Ar ben hynny "| Findstr Gweinyddwr“Dim ond pan oeddech chi'n gwybod beth yn union yr oedd yn gyfleus gweinyddwr angen, neu defnyddiwch y rhan gyntaf yn unig i weld pawb sydd wedi mewngofnodi i'r gweinydd.

Cyfleustodau ar gyfer cysylltiad cysgod dynol person nad yw'n weinyddwr â sesiynau defnyddwyr RDP yn WinServer 2012R2

2. Cysylltwch â'r sesiwn hon, ar yr amod bod yn y parth polisïau grŵp Dewisir yr opsiwn "Sefydlu rheolau rheoli o bell ar gyfer sesiynau defnyddwyr Gwasanaethau Penbwrdd o Bell" gydag o leiaf yr opsiwn "Monitro sesiwn gyda chaniatâd defnyddiwr" wedi'i ddewis (mwy):

mstsc /shadow:127

Sylwch y bydd y rhestr yn cynnwys mewngofnodi defnyddwyr yn unig.

Dywedaf eto y byddwch yn cael y canlynol heb hawliau gweinyddol:

Cyfleustodau ar gyfer cysylltiad cysgod dynol person nad yw'n weinyddwr â sesiynau defnyddwyr RDP yn WinServer 2012R2

Ond ar gyfer dadfygio rhagarweiniol y rhaglen a fydd yn cael ei drafod, defnyddiais gyfrif gyda hawliau gweinyddwr.

II. Rhaglen

Felly'r datganiad problem: creu rhyngwyneb graffigol syml i gysylltu â synnwyr cysgodol y defnyddiwr gyda'i ganiatâd, gan anfon neges at y defnyddiwr. Yr amgylchedd rhaglennu a ddewiswyd yw Lasarus.

1. Rydyn ni'n cael y rhestr parth lawn o ddefnyddwyr “mewngofnodi” - “enw llawn” gan y gweinyddwr, neu eto trwy'r consol:

wmic useraccount get Name,FullName 

nid oes neb yn gwahardd hyn hyd yn oed:

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

Fe ddywedaf ar unwaith mai Lasarus a gafodd broblem gyda phrosesu'r ffeil hon, oherwydd yn ddiofyn ei amgodio yw UCS-2, felly roedd yn rhaid i mi ei throsi â llaw i UTF-8 rheolaidd. Mae yna lawer o dabiau yn strwythur y ffeil, neu yn hytrach llawer o leoedd, y penderfynwyd eu prosesu'n rhaglennol; yn hwyr neu'n hwyrach bydd y broblem amgodio yn cael ei datrys, a bydd y ffeil yn cael ei diweddaru'n rhaglennol.

Felly, y syniad yw cael ffolder sy'n hygyrch i ddefnyddwyr y rhaglen, er enghraifft c: test, lle bydd 2 ffeil: y gyntaf gyda mewngofnodi ac enw llawn, yr ail gydag id_rdp a mewngofnodi defnyddwyr. Nesaf, rydym yn prosesu'r data hwn orau y gallwn :).

Yn y cyfamser, i gysylltu â'r rhestr o sesiynau, rydym yn trosglwyddo'r cynnwys hwn (mewngofnodi ac enw llawn) i arae:

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;

Ymddiheuraf am y “lot of code”, bydd y pwyntiau canlynol yn fwy cryno.

2. Gan ddefnyddio'r un dull â'r paragraff blaenorol, rydym yn darllen canlyniad prosesu'r rhestr i'r elfen StringGrid, tra byddaf yn rhoi darn o god “sylweddol”:

2.1 Rydym yn derbyn y rhestr gyfredol o sesiynau RDP mewn ffeil:

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 Prosesu’r ffeil (dim ond llinellau cod arwyddocaol a nodir):

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. Cysylltiad uniongyrchol ei hun trwy glicio ar y llinell gyda'r defnyddiwr a rhif ei sesiwn:

  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. Mae cwpl o addurniadau eraill wedi'u gwneud, fel eu didoli trwy glicio ar y botwm radio, a negeseuon i'r defnyddiwr neu'r holl ddefnyddwyr.

Cyfleustodau ar gyfer cysylltiad cysgod dynol person nad yw'n weinyddwr â sesiynau defnyddwyr RDP yn WinServer 2012R2

→ Gellir gweld cod ffynhonnell llawn yma

III. Defnyddio AdminLink - yr hyn a welais:

Mae AdminLink yn cynhyrchu llwybr byr sy'n cyfeirio at leoliad y cyfleustodau admilaunch.exe, a chopi personol o'r cyfleustodau lansio AdmiRun.Exe sydd wedi'i leoli yn ffolder y defnyddiwr, er enghraifft Vasya, math C:Defnyddwyrvasya FFENESTRI. Yn gyffredinol, nid yw popeth mor ddrwg: gallwch chi chwarae o gwmpas gyda hawliau mynediad i'r ffeil llwybr byr ac eraill i glirio'ch cydwybod gweinyddol eich hun.

Ffynhonnell: hab.com

Ychwanegu sylw