Утилита барои пайвасти сояи инсонии ғайриадминистратор ба сеансҳои корбари RDP дар WinServer 2012R2

Мушкилот дар давраи карантини корхона чунин шуд: воқеан зарур аст, ки шумораи ташрифоти мутахассисон ба офисҳо аз рӯи нармафзори барномавӣ хизматрасонӣ ва машваратдиҳандаро ба ҳадди ақалл кам кард ва росташро гӯем, корбарон аксар вақт аз кӯмаки мутахассисон суиистифода мекунанд, ки намехоҳанд ба ин масъала ворид шаванд. худи масъала, онҳо мегӯянд, ки "онҳо меоянд - онҳо кӯмак мекунанд - онҳо ин корро мекунанд, аммо ман тамоку мекашам/қаҳва менӯшам ва ғайра". Машварати телефонӣ ҳангоми мубодилаи сервер самараноктар аст, агар шумо экрани дурдастро бубинед.

Утилита барои пайвасти сояи инсонии ғайриадминистратор ба сеансҳои корбари RDP дар WinServer 2012R2

Пас аз «ихтироъ»-и велосипеди мо маълумоти оқилона дар мавзӯи мақола пайдо шуд: RDS Shadow - пайвасти сояафкан ба ҷаласаҳои корбари RDP дар Windows Server 2012 R2 ё Ҳолати сояи корбар беимтиёз дар сервери Windows ё Додани идоракунии ҷаласаҳои RDP. Ҳамаи онҳо истифодаи консолро дар бар мегиранд, ҳатто бо унсурҳои муколамаи оддӣ.

Ҳама маълумоти дар поён овардашуда барои онҳое пешбинӣ шудаанд ба вайронкуниҳои ғайримуқаррарӣ тоқат мекунад барои ба даст овардани натичаи дилхох, ихтироъ кардани усулхои нодаркор.
Барои он ки "гурбаро аз думаш накашад", ман аз охиринаш сар мекунам: велосипед барои корбари миёна кор мекунад, ки ин утилитро истифода мебарад. AdmiLink, ки барои он ба муаллифаш ташаккур.

I. Консол ва сояи RDP.

Азбаски истифода бо ҳуқуқҳои администратори консол Manager Server -> QuickSessionCollection -> бо пахш кардани сессияи корбари манфиатдор, аз менюи контекстӣ Сояро интихоб кунед барои кормандоне, ки чӣ тавр истифода бурдани нармафзорро дастур медиҳанд, вариант нест, усули дигари "чӯбӣ" баррасӣ шуд, яъне:

1. Рақами RDP-и сессияро пайдо кунед:

query user | findstr Administrator

ё:

qwinsta | findstr Administrator 

Гузашта аз ин"| findstr Administrator"Ин танҳо вақте қулай буд, ки шумо аниқ медонистед маъмурӣ ба шумо лозим аст, ё танҳо қисми аввалро истифода баред, то бубинед, ки ҳама ба сервер ворид шудаанд.

Утилита барои пайвасти сояи инсонии ғайриадминистратор ба сеансҳои корбари RDP дар WinServer 2012R2

2. Ба ин сессия пайваст шавед, ба шарте ки дар домен сиёсати гурӯҳ Опсияи "Танзим кардани қоидаҳои идоракунии дурдасти корбар барои сеансҳои хидматрасонии мизи кории дурдаст" бо интихоби ҳадди аққал "Монитор сеанси бо иҷозати корбар" интихоб карда мешавад (бештар маълумот):

mstsc /shadow:127

Лутфан таваҷҷӯҳ намоед, ки рӯйхат танҳо вурудоти корбарро дар бар мегирад.

Ман такрор мекунам, ки бе ҳуқуқҳои администратор шумо инҳоро мегиред:

Утилита барои пайвасти сояи инсонии ғайриадминистратор ба сеансҳои корбари RDP дар WinServer 2012R2

Аммо барои ислоҳи пешакии барномае, ки мавриди баррасӣ қарор дода мешавад, ман ҳисобро бо ҳуқуқҳои администратор истифода кардам.

II. Барнома

Ҳамин тавр, изҳороти мушкилот: эҷод кардани интерфейси оддии графикӣ барои пайваст шудан ба ҳисси сояи корбар бо иҷозати ӯ, фиристодани паём ба корбар. Муҳити барномасозии интихобшуда Лазарус мебошад.

1. Мо рӯйхати пурраи доменҳои корбарони "логин" - "номи пурра" -ро аз администратор ё боз тавассути консол мегирем:

wmic useraccount get Name,FullName 

касе инро манъ намекунад:

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

Ман дарҳол мегӯям, ки маҳз Лазарус бо коркарди ин файл мушкилӣ дошт, зеро ба таври нобаёнӣ рамзгузории он UCS-2 аст, бинобар ин ман бояд онро ба таври дастӣ ба UTF-8 муқаррарӣ табдил диҳам. Дар сохтори файл ҷадвалҳои зиёд, дурусттараш ҷойҳои зиёде мавҷуданд, ки қарор дода шуд, ки онҳо ба таври барномавӣ коркард карда шаванд; дер ё зуд мушкилоти рамзгузорӣ ҳал карда мешавад ва файл ба таври барномавӣ нав карда мешавад.

Ҳамин тавр, идея ин аст, ки папкае барои корбарони барнома дастрас бошад, масалан c:test, ки дар он 2 файл мавҷуд хоҳад буд: якум бо логин ва номи пурра, дуюм бо id_rdp ва воридшавии корбарон. Баъдан, мо ин маълумотро то ҳадди имкон коркард мекунем :).

Дар ҳамин ҳол, барои пайвастан бо рӯйхати сессияҳо, мо ин мундариҷаро (логин ва номи пурра) ба массив интиқол медиҳем:

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. Якчанд ороишҳои дигар сохта шудаанд, ба монанди ҷудокунӣ бо пахш кардани тугмаи радио ва паёмҳо ба корбар ё ҳамаи корбарон.

Утилита барои пайвасти сояи инсонии ғайриадминистратор ба сеансҳои корбари RDP дар WinServer 2012R2

→ Рамзи пурраи сарчашмаро дидан мумкин аст дар ин ҷо

III. Истифодаи AdminLink - он чизе ки ман дидам:

AdminLink миёнабуреро тавлид мекунад, ки ба ҷойгиршавии утилита ишора мекунад admilaunch.exe, ва нусхаи шахсии утилитаи оғозёбӣ AdmiRun.Exe ки дар папкаи корбар чойгир аст, масалан Вася, навъи C: UsersvasyaWINDOWS. Умуман, на ҳама чиз он қадар бад аст: шумо метавонед бо ҳуқуқи дастрасӣ ба файли миёнабур ва дигарон бозӣ кунед, то виҷдони администратори худро тоза кунед.

Манбаъ: will.com

Илова Эзоҳ