በWinServer 2012R2 ውስጥ የአስተዳዳሪ ያልሆነውን ከRDP ተጠቃሚ ክፍለ-ጊዜዎች ጋር ለሰው ልጅ ጥላ ግንኙነት መገልገያ።

በድርጅቱ የኳራንቲን ጊዜ ውስጥ ያለው ችግር የሚከተለው ሆነ-በአፕሊኬሽን ሶፍትዌሮች ላይ ልዩ ባለሙያተኞችን በማገልገል እና በማማከር ወደ ቢሮዎች የሚመጡትን የጉብኝት ብዛት መቀነስ በጣም አስፈላጊ ነው ፣ እና በእውነቱ ፣ ተጠቃሚዎች ብዙውን ጊዜ ወደ ውስጥ ለመግባት ሳይፈልጉ የልዩ ባለሙያዎችን እርዳታ አላግባብ ይጠቀማሉ። ጉዳዩ ራሱ “እነሱ ይመጣሉ - ይረዳሉ - ያደርጉታል ፣ ግን ቡና አጨሳለሁ / እጠጣለሁ ፣ ወዘተ” ይላሉ ። አገልጋይ ሲያጋሩ የስልክ ምክክር የርቀት ስክሪን ካዩ የበለጠ ውጤታማ ይሆናል።

በWinServer 2012R2 ውስጥ የአስተዳዳሪ ያልሆነውን ከRDP ተጠቃሚ ክፍለ-ጊዜዎች ጋር ለሰው ልጅ ጥላ ግንኙነት መገልገያ።

የብስክሌታችን “ፈጠራ” በኋላ በአንቀጹ ርዕስ ላይ ጤናማ መረጃ ተገኝቷል- RDS Shadow - በWindows Server 2012 R2 ውስጥ ከRDP ተጠቃሚ ክፍለ ጊዜዎች ጋር የጥላ ግንኙነት ወይም ያልተፈቀደ የተጠቃሚ ጥላ ሁነታ በዊንዶውስ አገልጋይ ውስጥ ወይም የRDP ክፍለ-ጊዜዎችን አስተዳደር በውክልና መስጠት. ሁሉም የኮንሶል አጠቃቀምን ያካትታሉ፣ ከቀላል የንግግር ክፍሎች ጋር።

ከታች ያሉት ሁሉም መረጃዎች የታሰቡት ለእነዚያ ነው። መደበኛ ያልሆነ መዛባትን ይታገሣል። ተፈላጊውን ውጤት ለማግኘት, አላስፈላጊ ዘዴዎችን መፈልሰፍ.
"ድመቷን በጅራት ላለመሳብ" በመጨረሻው እጀምራለሁ-ብስክሌቱ መገልገያውን በመጠቀም ለአማካይ ተጠቃሚ ይሠራል. አድሚሊንክ፣ ለዚህም ደራሲው ምስጋና ይግባው።

I. ኮንሶል እና ጥላ RDP

ጋር መጠቀም ጀምሮ የአገልጋይ አስተዳዳሪ ኮንሶል አስተዳዳሪ መብቶች -> QuickSessionCollection -> የፍላጎት ተጠቃሚውን ክፍለ ጊዜ ጠቅ በማድረግ ከአውድ ምናሌው ውስጥ ጥላን በመምረጥ ሶፍትዌሩን እንዴት እንደሚጠቀሙ መመሪያ ለሚሰጡ ሰራተኞች, አማራጭ አይደለም, ሌላ "የእንጨት" ዘዴ ግምት ውስጥ ገብቷል, እሱም:

1. የክፍለ-ጊዜውን RDP መታወቂያ ይወቁ፡-

query user | findstr Administrator

ወይም:

qwinsta | findstr Administrator 

ከዚህም በላይ "| Findstr አስተዳዳሪ"ትክክለኛውን በትክክል ሲያውቁ ብቻ አመቺ ነበር አስተዳዳሪ ያስፈልግዎታል ወይም ሁሉም ሰው ወደ አገልጋዩ እንደገባ ለማየት የመጀመሪያውን ክፍል ብቻ ይጠቀሙ።

በ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 ለምሳሌ በተጠቃሚው አቃፊ ውስጥ የሚገኝ ቫስያ, አይነት C: UsersvasyaWINDOWS. በአጠቃላይ, ሁሉም ነገር በጣም መጥፎ አይደለም: የራስዎን የአስተዳዳሪ ህሊና ለማጽዳት የአቋራጭ ፋይል እና ሌሎች የመዳረሻ መብቶችን መጫወት ይችላሉ.

ምንጭ: hab.com

አስተያየት ያክሉ