Težava v obdobju karantene podjetja je postala naslednja: resnično je treba čim bolj zmanjšati število obiskov pisarn s strani strokovnjakov, ki servisirajo in svetujejo o aplikacijski programski opremi, in odkrito povedano, uporabniki pogosto zlorabljajo pomoč strokovnjakov, ne da bi se želeli poglobiti v samo vprašanje, pravijo "prišli bodo - pomagali bodo - naredili bodo, ampak bom kadil/pil kavo itd." Telefonsko posvetovanje pri skupni rabi strežnika je učinkovitejše, če gledate oddaljeni zaslon.
Po "izumu" našega kolesa so se pojavile zdrave informacije o temi članka:
Vse spodnje informacije so namenjene tistim, ki normalno prenaša nenormalne perverzije da bi dosegli želeni rezultat, izumljali nepotrebne metode.
Da ne bom "vlekel mačke za rep", bom začel z zadnjim: kolo deluje za povprečnega uporabnika, ki uporablja pripomoček
I. Konzola in senčni RDP.
Od uporabe z skrbniške pravice konzole Server Manager -> QuickSessionCollection -> s klikom na sejo uporabnika, ki vas zanima, v kontekstnem meniju izberite Shadow za osebje, ki daje navodila za uporabo programske opreme, ni možnost, upoštevana je bila druga "lesena" metoda, in sicer:
1. Poiščite ID RDP seje:
query user | findstr Administrator
ali:
qwinsta | findstr Administrator
Poleg tega "| Skrbnik findstr»Priročno je bilo le, ko si vedel, kaj točno skrbnik ki jih potrebujete, ali uporabite samo prvi del, da vidite vse, ki so prijavljeni v strežnik.
2. Povežite se s to sejo, pod pogojem, da v domeni pravilnike skupine Izbrana je možnost »Nastavitev pravil oddaljenega nadzora za uporabniške seje storitev oddaljenega namizja« z izbrano vsaj možnostjo »Nadzor seje z uporabniškim dovoljenjem« (
mstsc /shadow:127
Upoštevajte, da bo seznam vseboval samo uporabniške prijave.
Ponavljam, da boste brez skrbniških pravic dobili naslednje:
Toda za predhodno odpravljanje napak v programu, o katerem bomo razpravljali, sem uporabil račun s skrbniškimi pravicami.
II. Program
Torej izjava o problemu: ustvarjanje nekega preprostega grafičnega vmesnika za povezavo z uporabnikovim senzorjem sence z njegovim dovoljenjem, pošiljanje sporočila uporabniku. Izbrano programsko okolje je Lazarus.
1. Celoten seznam domen uporabnikov "prijava" - "polno ime" dobimo od skrbnika ali ponovno prek konzole:
wmic useraccount get Name,FullName
tudi tega nihče ne prepoveduje:
wmic useraccount get Name,FullName > c:testusername.txt
Takoj bom rekel, da je Lazarus imel težave z obdelavo te datoteke, saj je privzeto kodirana UCS-2, zato sem jo moral samo ročno pretvoriti v običajni UTF-8. V strukturi datoteke je veliko zavihkov oziroma veliko presledkov, za katere je bilo odločeno, da jih programsko obdelamo; prej ali slej bo problem kodiranja rešen in datoteka bo programsko posodobljena.
Torej, ideja je imeti mapo, dostopno uporabnikom programa, na primer c:test, v kateri bosta 2 datoteki: prva s prijavo in polnim imenom, druga z id_rdp in prijavo uporabnikov. Nato te podatke obdelamo po svojih najboljših močeh :).
Medtem, da se povežemo s seznamom sej, prenesemo to (prijavno in polno ime) vsebino v polje:
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;
Opravičujem se za "veliko kode", naslednje točke bodo bolj jedrnate.
2. Z isto metodo iz prejšnjega odstavka preberemo rezultat obdelave seznama v element StringGrid, medtem ko bom podal “pomemben” del kode:
2.1 Prejmemo trenutni seznam sej RDP v datoteki:
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 Obdelajte datoteko (navedene so samo pomembne vrstice kode):
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. Sama neposredna povezava s klikom na vrstico z uporabnikom in njegovo številko seje:
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. Narejenih je bilo še nekaj okraskov, kot je razvrščanje s klikom na izbirni gumb in sporočila uporabniku oziroma vsem uporabnikom.
→ Vidite lahko celotno izvorno kodo
III. Uporaba AdminLink – kaj sem videl:
AdminLink ustvari bližnjico, ki se sklicuje na lokacijo pripomočka admilaunch.exein osebno kopijo pripomočka za zagon AdmiRun.Exe ki se nahaja v uporabniški mapi npr Vasja, vrsta C:Uporabniki vas WINDOWS. Na splošno ni vse tako slabo: lahko se igrate s pravicami dostopa do datoteke bližnjic in drugih, da si očistite lastno skrbniško vest.
Vir: www.habr.com