په WinServer 2012R2 کې د RDP کاروونکي غونډو ته د غیر مدیر د انساني سیوري اړیکې لپاره کارول

د تصدۍ د قرنطین دورې په جریان کې ستونزه په لاندې ډول رامینځته شوه: دا واقعیا اړینه ده چې د غوښتنلیک سافټویر کې د خدماتو او مشورې ورکولو متخصصینو لخوا دفترونو ته د لیدنو شمیر کم کړئ ، او په ریښتیا سره ، کارونکي اکثرا د متخصصینو مرستې څخه ناوړه ګټه پورته کوي پرته لدې چې دوی ته اړتیا ولري. پخپله مسله ، دوی وايي "دوی به راشي - دوی به مرسته وکړي - دوی به دا وکړي ، مګر زه به سګرټ څښم / کافي څښم ، او داسې نور." د تلیفون مشوره کله چې د سرور شریکول خورا مؤثره دي که تاسو ریموټ سکرین وګورئ.

په WinServer 2012R2 کې د RDP کاروونکي غونډو ته د غیر مدیر د انساني سیوري اړیکې لپاره کارول

زموږ د بایسکل د "اختراع" وروسته، د مقالې موضوع په اړه هوښیار معلومات راپورته شول: د RDS سیوري - په وینډوز سرور 2012 R2 کې د RDP کارونکي غونډو سره سیوري اړیکه او یا په وینډوز سرور کې د بې ګټې کارونکي سیوري حالت او یا د RDP غونډو مدیریت سپارل. دا ټول د کنسول کارول شامل دي، حتی د ساده خبرو اترو عناصرو سره.

لاندې ټول معلومات د هغو کسانو لپاره دي چې په نورمال ډول غیر معمولي انحرافات زغمي د مطلوب پایلې ترلاسه کولو لپاره، د غیر ضروري میتودونو اختراع کول.
د دې لپاره چې "پیشو د لکۍ په واسطه راوباسئ" ، زه به له وروستي سره پیل وکړم: بایسکل د اوسط کارونکي لپاره د افادیت په کارولو سره کار کوي AdmiLink، د کوم لپاره چې د دې لیکوال څخه مننه.

I. کنسول او سیوري RDP.

د کارولو راهیسې د سرور مدیر کنسول د مدیر حقونه -> QuickSessionCollection -> د ګټو کارونکي سیشن باندې کلیک کولو سره ، د شرایطو مینو څخه سیوري غوره کړئ د پرسونل لپاره چې د سافټویر کارولو څرنګوالی لارښوونه کوي، یو اختیار نه دی، یو بل "لرګي" طریقه په پام کې نیول شوې وه، یعنې:

1. د غونډې RDP ID ومومئ:

query user | findstr Administrator

یا:

qwinsta | findstr Administrator 

سربیره پردې "| د مدیر موندلو"دا یوازې اسانه وه کله چې تاسو پوهیدل چې واقعیا څه Administrator تاسو اړتیا لرئ، یا یوازې لومړۍ برخه وکاروئ ترڅو وګورئ چې هرڅوک سرور ته ننوتل شوي.

په WinServer 2012R2 کې د RDP کاروونکي غونډو ته د غیر مدیر د انساني سیوري اړیکې لپاره کارول

2. دې غونډې ته وصل شئ، په دې شرط چې په ډومین کې وي ګروپ پالیسي "د ریموټ ډیسټاپ خدماتو د کاروونکو غونډو لپاره د ریموټ کنټرول مقررات تنظیم کړئ" انتخاب لږترلږه د "د کارونکي اجازې سره د نظارت ناستې" انتخاب سره غوره شوی (نور معلومات):

mstsc /shadow:127

مهرباني وکړئ په یاد ولرئ چې لیست به یوازې د کارونکي ننوتل ولري.

زه تکراروم چې د اداري حقونو پرته به تاسو لاندې ترلاسه کړئ:

په WinServer 2012R2 کې د RDP کاروونکي غونډو ته د غیر مدیر د انساني سیوري اړیکې لپاره کارول

مګر د برنامه لومړني ډیبګ کولو لپاره چې بحث به پرې وشي ، ما د مدیر حقونو سره حساب کارولی.

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. یو څو نور ډیزاینونه جوړ شوي، لکه د راډیو بټن په کلیک کولو سره ترتیب کول، او کارونکي یا ټولو کاروونکو ته پیغامونه.

په WinServer 2012R2 کې د RDP کاروونکي غونډو ته د غیر مدیر د انساني سیوري اړیکې لپاره کارول

→ بشپړ سرچینه کوډ لیدل کیدی شي دلته

III. د AdminLink کارول - هغه څه چې ما ولیدل:

AdminLink یو شارټ کټ رامینځته کوي چې د کارونې موقعیت ته اشاره کوي admilaunch.exe، او د لانچ کارونې شخصي کاپي AdmiRun.Exe کوم چې د کاروونکي فولډر کې موقعیت لري، د بیلګې په توګه واساډول ج: کاروونکي وینډوز. په عموم کې ، هرڅه دومره خراب ندي: تاسو کولی شئ د شارټ کټ فایل او نورو ته د لاسرسي حقونو سره شاوخوا لوبې وکړئ ترڅو خپل اداري ضمیر پاک کړئ.

سرچینه: www.habr.com

Add a comment