Introducere
– denumirea de marketing a următoarei versiuni de Windows 10. Lansarea acestei versiuni a fost anunțată în septembrie 2018, având astfel versiunea 1809, unde 18 – anul, 09 – luna. Despre noua lansare Windows 10 1809 s-au scris multe articole, dar majoritatea dintre ele se concentrează pe diferite „decoruri”, „estetice” și diverse funcționalități care sunt solicitate în medii de acasă.
În acest articol, vom discuta doar despre funcționalitatea care poate fi relevantă pentru producătorii de dispozitive cu scop fix. Anume despre noile posibilități ale modului „Kiosk”. De asemenea, vom aborda tema schimbării denumirilor schemelor de întreținere pentru edițiile Windows destinate segmentului de afaceri.
Schema veche de întreținere cu o nouă denumire
Voi începe cu o mică explicație: în segmentul corporate al edițiilor Windows există două scheme de întreținere, prin care Windows primește actualizări. Schemele de întreținere au o denumire literară. Acum, ramurile de întreținere se numesc LTSC și SAC.
LTSC – înseamnă (cu întreținere pe termen lung). Anterior, acest canal era numit LTSB – Long Term Servicing Branch, Microsoft a schimbat pur și simplu denumirea canalului de întreținere, dar întreținerea a rămas aceeași.
De asemenea, Microsoft a schimbat denumirea ramurii de întreținere CBB – Current Branch for Business, acum această ramură de întreținere se numește SAC – . Din nou, s-a schimbat doar denumirea.
Dar trebuie menționat că pentru ramurile de întreținere LTSC și SAC se folosesc distribuții Windows diferite.
Puțin despre noul mod Kiosk în SAC
Așa cum am spus, LTSC și SAC au distribuții diferite. În LTSC nu există aplicații universale standard și magazin de aplicații, iar în SAC există. Prin urmare, în LTSC nu există browserul Edge, dar în SAC există. Dacă, la configurarea kiosk-ului, alegeți browserul Edge, acum există acces la două moduri:
- Ca semn digital sau afișaj interactiv
- Ca browser public
Nu mă voi opri asupra configurării acestor moduri, deoarece setarea este foarte simplă și se realizează în interfața grafică. Pur și simplu creați un utilizator care nu este în grupul „Administratorii”, activați modul kiosk pentru acesta utilizând EDGE și observați funcționarea acestor moduri.
Kiosk cu mai multe aplicații
Unii cred că utilizarea licențiată presupune funcționarea doar a unei aplicații pe dispozitiv, dar, de fapt, nu este așa. Dispozitivul trebuie să fie destinat executării unei singure sarcini de afaceri, iar utilizatorului nu ar trebui să-i fie accesibil desktopul. Acum Microsoft a oferit un instrument pentru utilizarea mai multor aplicații. Acest mod se numește „multi-app kiosk”, pe care, pentru brevitate, îl voi numi „mulkiosk”. În acest articol, vom analiza configurarea acestui mod folosind un pachet de asigurare și unele caracteristici ale acestui mod.
Câteva detalii despre modul „Mulkiosk”
La conectarea la contul utilizatorului pentru care este configurat modul mulkiosk, sistemul va funcționa în modul tabletă. Meniul „Start” va fi extins pe ecranul complet, unde vor fi afișate plăcile aplicațiilor.
Lista principalelor configurații și funcționalități ale modului:
- Configurare pentru mai mulți utilizatori sau grupuri
- Fiecărui utilizator sau grup i se pot asigna configurații individuale
- Posibilitatea de a utiliza aplicații universale și clasice
- Posibilitatea de a lansa automat una dintre aplicații la conectarea utilizatorului în sistem
- Funcționarea aplicațiilor pe baza unei liste albe
- Acces la foldere pe baza unei liste albe
Merită să ne concentrăm asupra punctului 5. În mod implicit, va fi permisă utilizarea doar aplicațiilor necesare pentru funcționarea sistemului, celelalte aplicații trebuie adăugate la lista de permise. Adică, acum nu trebuie să configurăm separat AppLocker. Apropo, pentru a evita conflictele de configurare a AppLocker-ului, în modul mulkiosk toate regulile AppLocker configurate nu vor fi aplicate.
Punctul 6 indică o oportunitate bună, dar în prezent se poate permite scrierea doar pentru folderul „Downloads”. Modul permite utilizarea aplicațiilor universale și clasice. Toate configurațiile modului sunt specificate într-un fișier XML, în care se pot indica, de asemenea, configurațiile pentru un kiosk cu o singură aplicație.
Acum hai să încercăm să configurăm totul...
Ce ne va trebui...
- În primul rând, ne va trebui sistemul care suportă modul mulkiosk. versiunea demo
- Orice editor XML
- Pentru a aplica configurațiile mulkiosk:
- Pentru metoda nr. 1 — ICD, care face parte din ADK. ADK poate fi
- Pentru metoda nr. 2 – utilitarul PsExec. Utilitarul poate fi
El a spus – „Să mergem!”
Toate experimentele le voi efectua pe Windows 10 IoT Enterprise 1809 LTSC x32 versiunea comercială, nu versiunea demo. Sistemul va fi fără activare, deoarece lipsa activării nu afectează funcționalitatea sistemului. Am ales 32 de biți doar pentru că ocupă mai puțin spațiu și lucrul cu imaginile sistemului va fi mai rapid.
Pasul 1 – instalare
Instalarea Win 10 IoT Enterprise nu se deosebește de instalarea Win 10 Enterprise, așa că nu voi descrie întregul proces de instalare, voi menționa doar câteva nuanțe.
Pentru orice eventualitate, amintesc, nu instalați sistemul peste un sistem deja instalat. Când instalatorul vă va întreba despre locul de instalare a sistemului, ștergeți toate partițiile de pe viitorul disc sistem și indicați discul nepartiționat.
Instalăm sistemul fără a ne conecta la internet, pentru a evita descărcarea a ceva suplimentar.
Din moment ce vom crea imagini de rezervă ale sistemului și pentru aceasta vom sigila sistemul în modul audit, putem economisi puțin timp încărcând sistemul în modul audit imediat după instalare. Pentru aceasta, când sistemul vă va cere să alegeți regiunea „Să începem cu regiunea. Este corect?” apăsați „Ctrl+Shift+F3”.
Pasul 2 – creăm imaginea sistemului
Dat fiind că ne vom abate de la sistem, încercând diferite setări noi, nu este exclus că ceva să nu meargă bine și va trebui să readucem sistemul la starea inițială. Iar pentru un return rapid la starea inițială, trebuie să creăm o imagine a sistemului. Singurul lucru pe care îl voi face este să copiez „setul gentlemanului” – scriptul și fișierul de răspunsuri. Toate fișierele se află în folderul „Sysprep”, pe care îl voi copia în rădăcina discului sistem. Și, desigur, voi împărtăși cu voi acest „set gentleman”.
Sysprep.bat – pentru sigilarea sistemului.
@echo off
chcp 1251>nul
net session>nul 2>nul
if %errorLevel% neq 0 (powershell -command "Start-Process "%~s0" -Verb RunAs"&exit)
tasklist /fi "ImageName eq sysprep.exe" | find /i "sysprep.exe"
if %errorlevel% lss 1 (taskkill /im sysprep.exe)
set AdminName=Admin
net user minName%>nul 2>nul
if %errorLevel% neq 0 (call :AddAdmin "minName%")
if %errorLevel% neq 0 (call :ShowMessage "‡‡‡Eroare la crearea unei noi cont de administrator "minName%"‡‡Apăsați orice tastă pentru a închide scriptul"&pause>nul&exit)
pushd "%~dp0"
cls
call :ShowMessage ‡‡‡‡‡‡‡‡‡‡
echo 1 - Captura sistemului în modul audit
echo 2 - Captura sistemului în modul de bun venit
:Select
set /p Choice="Introduceți numărul opțiunii din meniu: "
if "%Choice%"=="1" (goto Audit)
if "%Choice%"=="2" (goto OOBE)
echo.&echo A fost selectată o valoare invalidă.&goto Select
exit
:Audit
call :ShowMessage "‡‡‡‡‡Capturarea sistemului în modul audit"
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionRun /v KillSysprep /t REG_SZ /d "taskkill /im sysprep.exe" /f
%SYSTEMROOT%System32Sysprepsysprep.exe /audit /generalize /shutdown /quiet
goto :eof
:OOBE
call :ShowMessage "‡‡‡‡‡Capturarea sistemului în modul de bun venit"
reg delete HKLMSoftwareMicrosoftWindowsCurrentVersionRun /v KillSysprep /f
powershell -command "(Get-Content -path 'Unattend.xml' -Raw).Trim() -replace 'Architecture=""".+?"""','Architecture="""%PROCESSOR_ARCHITECTURE%"""' | Set-Content -path 'Unattend.xml'"
%SYSTEMROOT%System32Sysprepsysprep.exe /oobe /generalize /shutdown /quiet /unattend:Unattend.xml
goto :eof
:AddAdmin
setlocal
set UserName=%~1
if not defined UserName (echo Nu a fost specificat un nume de utilizator&endlocal&exit /b 1)
call :GetGroupName "S-1-5-32-544" AdminGroup
if not defined AdminGroup (endlocal&exit /b 2)
call :GetGroupName "S-1-5-32-545" UserGroup
if not defined UserGroup (endlocal&exit /b 3)
net user %UserName% /add
wmic useraccount where "Name='%UserName%'" set PasswordExpires=False>nul
net localgroup minGroup% %UserName% /add
net localgroup %UserGroup% %UserName% /delete
endlocal&exit /b 0
goto :eof
:GetGroupName
if "%~1"=="" (echo Nu a fost specificat SID-ul grupului&goto :eof)
set %2=
for /f "tokens=2 delims= " %%i in ('whoami /groups /fo table^|find "%~1"') do set %2=%%i
if not defined %2 (echo Eroare la determinarea numelui grupului pe baza SID-ului "%~1")
goto :eof
:ShowMessage
setlocal enabledelayedexpansion
set String=%~1
if not defined String (echo.&setlocal disabledelayedexpansion&goto :eof)
set /a ConCols=120 & set /a Num=1
set "String[!Num!].str=%String:‡=" & set /a Num+=1 & set "String[!Num!].str=%"
for /l %%a in (1,1,%Num%) do (
for /l %%b in (0,1,%ConCols%) do if "!String[%%a].str:~%%b!" == "" (set "String[%%a].str= !String[%%a].str! "&set /a String[%%a].len-=1) else (set /a String[%%a].len+=0||set /a String[%%a].len=0)
if not defined String[%%a].str (set String[%%a].str= )
if not !String[%%a].len! equ 0 (call set String[%%a].str=%%String[%%a].str:~,!String[%%a].len!%%)
if "!String[%%a].str: =!"=="" (echo.) else (echo !String[%%a].str!))
setlocal disabledelayedexpansion
goto :eofLa rularea scriptului, acesta va verifica dacă există un cont „Admin” și îl va crea dacă nu există. Contul va fi adăugat în grupul „Administratori”.
Unattend.xml – fișier de răspunsuri pentru sysprep.
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f
1
Nu afișa pagina cheii
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f
2
Nu crea cont
cmd.exe /c rd %systemdrive%Sysprep /s /q
3
Șterge folderul
true
Admin
en-US; ro-RO
ro-RO
ro-RO
ro-RO
true
true
true
true
true
1Când sistemul este sigilat în modul de audit, scriptul va adăuga în registrul de sistem comanda de încheiere a procesului „sysprep.exe” pentru a nu fi necesar să închideți fereastra sysprep de fiecare dată manual. Când sistemul este sigilat în modul de întâmpinare, scriptul va elimina din registru comanda de închidere a ferestrei și va schimba valoarea arhitecturii în fișierul de răspuns pentru a corespunde celei curente. Fișierul de răspuns conține parametrii pentru bootarea sistemului fără intervenția utilizatorului și comanda pentru eliminarea folderului „Sysprep” de pe unitatea sistemului.
Acum voi sigila sistemul în modul de audit folosind „Sysprep.bat” și voi crea o imagine a sistemului. Voi crea imaginea sistemului cu ajutorul DISM-ului și voi realiza imaginea doar pentru volumul sistemului. Dacă veți crea imaginea doar pentru volumul sistemului, și nu pentru întreaga unitate, nu uitați să copiați conținutul directorului „WindowsSystem32Recovery” pe primul volum în folderul „RecoveryWindowsRE” după desfășurarea sistemului. Acest lucru trebuie efectuat înainte de a încărca OS-ul, deoarece după încărcarea sistemului directorul „WindowsSystem32Recovery” va fi deja gol.
Pasul 3 – localizarea sistemului
Pachetul de limbi poate fi instalat fără conectare la internet, dacă aveți acest pachet. Dacă nu, atunci sistemul îl va descărca singur din internet, când adăugați limba în setări. Important este să nu folosiți pachetul de limbi de la versiunile anterioare ale sistemului de operare. Pentru Windows 10 1809, pachetul de limbi trebuie să fie exact pentru Windows 10 1809.
Microsoft își urmează planul – o tranziție graduală a setărilor din meniul clasic în cel nou, așa că în panoul de control clasic nu veți găsi deja setările pentru schimbarea limbii și instalarea pachetului de limbi. Aceste setări sunt acum disponibile doar în parametrii sistemului.
În modul de audit, puteți întâmpina probleme în deschiderea parametrilor sistemului din meniul „Start”, pentru a deschide parametrii sistemului executați comanda – „ms-settings:”, observați două puncte la sfârșitul comenzii; fără acestea, comanda nu va funcționa. După ce ați deschis o dată parametrii sistemului cu această comandă, îl puteți deschide și prin meniul grafic.
Dar în parametrii sistemului puteți instala pachetul de limbi dacă sistemul este conectat la internet; nu există opțiunea de a alege instalarea pachetului de limbi dintr-un fișier local.
Nu voi descrie procesul de localizare a sistemului deoarece acest lucru ar îngreuna considerabil articolul, mai ales că procesul de localizare este detaliat . Dar aș dori să atrag atenția asupra unei trăsături a schimbării limbii sistemului după instalarea pachetului lingvistic folosind consola. Această caracteristică este descrisă în aceeași wiki la care am făcut referire anterior, în subsecțiunea .
Voi instala pachetul lingvistic fără conexiune la internet.
După finalizarea localizării sistemului, asigurați-vă că creați o imagine a sistemului.
Pasul 4 – instalarea aplicațiilor necesare
Deoarece în sistemele LTSB și LTSC nu există magazin de aplicații, instalarea aplicațiilor din „Microsoft Store” ridică anumite dificultăți, în special – descărcarea aplicației. Pentru a descărca aplicațiile, compania „Adguard” a creat un serviciu foarte convenabil – , prin care puteți obține linkuri temporare pentru descărcarea aplicațiilor și componentelor acestora.
Pentru a instala aplicația, aveți nevoie de fișiere cu extensiile „Appx” și „AppxBundle”. Înainte de a instala aplicația propriu-zisă, trebuie să instalați componentele sale. De obicei, componentele aplicației pot fi distinse instinctiv după numele fișierului.
Pentru a nu face articolul prea lung, nu voi descrie în detaliu procesul de instalare a aplicațiilor, mai ales că există . Dar voi adăuga încă o metodă de instalare a aplicațiilor în contul curent. Aplicațiile pot fi instalate folosind programul , dar pentru instalarea aplicațiilor este necesară o conexiune la internet; totuși, aplicațiile pot fi instalate cu un dublu clic și nu vor fi necesare componentele acestora, toate componentele necesare vor fi descărcate și instalate .
Și o mică reamintire: când instalați aplicația în contul curent, sistemul nu poate fi sigilat. Cum să instalați aplicații pentru a avea posibilitatea de a sigila sistemul vedeți în instrucțiunea menționată mai sus. Iar pentru a verifica funcționarea multikiiosk-ului, aplicațiile deja existente sunt suficiente.
Pasul 5 – crearea fișierului de configurare pentru multikiiosk
Iată că am ajuns la cea mai interesantă parte – configurarea modului kiosk. Ne uităm în configurare și vedem. În primul rând, va trebui să creăm un fișier XML de configurare, un exemplu complet al căruia poate fi .
Să începem cu configurarea plasării plăcilor. Cea mai simplă metodă de a crea o configurație XML pentru setarea plăcilor este .
Mai întâi, vom adăuga în meniul „Start” plăcile aplicațiilor de care avem nevoie. Apelăm căutarea „Win+s”, găsim aplicația dorită, facem clic dreapta pe ea și alegem opțiunea „Fixare pe ecranul de start”.
Am fixat următoarele aplicații:
- Notepad
- Calculator
- Internet Explorer
- Paint
- WordPad
- Setări
- Securitate Windows
Ultimele două aplicații au fost fixate deoarece în livrarea standard LTSC nu există alte aplicații universale. Rețineți că plăcile aplicațiilor clasice fac referire la scurtături. Acum, prin mutarea plăcilor direct în meniul „Start”, voi împărți plăcile fixate în două grupuri. Pentru a crea un nou grup de plăci, trageți o placă semnificativ mai sus sau mai jos decât celelalte plăci; va apărea un separator intuitiv. Puteți denumi grupurile după cum doriți; pentru aceasta, plasați cursorul deasupra grupului, iar când apare textul „Denumește grupul”, faceți clic stânga. Primul grup îl voi numi „Setări”, iar în acesta vor intra plăcile „Opțiuni” și „Securitate Windows”. Al doilea grup îl voi numi „Aplicații Office”, care va include toate celelalte plăci. Apropo, este posibil să mutați grupuri întregi de plăci, trăgându-le de cele două benzi care se află în colțul din dreapta sus al numelui grupului.
Deoarece numele de pe placa „Securitate Windows” nu se încadrează complet, voi schimba dimensiunea acesteia în „Largă”. Pentru a schimba dimensiunea plăcii, trebuie să dați clic dreapta pe placă și să alegeți opțiunea „Schimbare dimensiune”.
După configurare, exportăm starea curentă, executând comanda în PowerShell – „Export-StartLayout – path C:SysprepStartLayout.xml”.
Mai departe, cel mai simplu este să nu creați fișierul de configurare manual, ci setărilor – apăsăm pe butonul „Copy”, inserăm conținutul într-un fișier de tip notepad și salvăm ca „MultiAppKiosk.xml”. Acum schimbăm setările după cum dorim. Pentru a modifica setările plăcilor atașate, copiem întregul bloc „StartLayoutCollection” din „StartLayout.xml” în „MultiAppKiosk.xml”. Pentru a adăuga aplicații în lista permisă, trebuie să inserăm identificatorii aplicațiilor universale în secțiunea „AllowedApps” și în acest bloc să adăugăm calea completă către fișierele executabile ale aplicațiilor clasice, care este specificată în proprietățile shortcut-urilor la care se referă plăcile. Pentru a accesa rapid shortcut-ul, faceți clic dreapta pe placa atașată și navigați în meniul „More > Go to file location”. Rețineți, pentru a specifica ID-ul aplicației universale se utilizează parametrul „AppUserModelId”, iar pentru a specifica calea completă către aplicația clasică se utilizează parametrul „DesktopAppPath”. Și un mic detaliu, dacă intenționați să utilizați IE în sistemul x64, atunci în lista aplicațiilor permise trebuie să specificați două căi pentru fișierul executabil „Program FilesInternet Exploreriexplore.exe” și „Program Files (x86)Internet Exploreriexplore.exe”.
Nu voi oferi acces la foldere, așa că șterg secțiunea „FileExplorerNamespaceRestrictions”.
Afișarea barei de sarcini nu mă deranjează, așa că în secțiunea „Taskbar” las totul așa cum este.
În exemplu sunt specificate două profile, dar eu voi avea numai un profil, așa că secțiunea cu al doilea profil poate fi ștearsă. Înainte de a șterge, rețineți exemplul pentru pornirea automată a aplicației cu argumente.
În secțiunea „Configs” conturile sunt legate de profile, rețineți că unui profil pot fi legate mai multe conturi. Dar, deoarece mă interesează doar un singur cont, voi șterge toate legăturile în afară de prima – blocurile „Config”. În legătura rămasă voi specifica numele utilizatorului „User”.
Am obținut un fișier cu următoarele parametrii
MultiAppKiosk.xml
<![CDATA[
]]>
UserCând veți crea fișierele XML de configurare, nu uitați că fiecare profil trebuie să aibă un ID unic, nu doar în cadrul unui singur fișier XML, ci și în cadrul aceleași OS. Adică, ideal ar fi să creați un nou identificator de fiecare dată, acest lucru se poate face în mediul PowerShell cu comanda „[guid]::NewGuid()”. Și asigurați-vă că salvați fișierul în codificarea „UTF-8”; dacă fișierul este salvat în codificarea „ANSI”, veți primi o eroare la construirea pachetului de pregătire dacă fișierul XML conține caractere chirilice.
Pasul 6 – aplicarea setărilor multi-kiosk
Vom examina două modalități de aplicare a setărilor descrise în fișierul de configurare. Prima modalitate – folosind un pachet de pregătire, care trebuie creat în ICD. Pentru unii, această modalitate poate fi mai obișnuită. A doua – utilizând „MDM Bridge WMI Provider”, care mi s-a părut mai convenabil.
Modalitatea nr. 1
Cei care nu au ICD, și instalați-l. Instalarea ADK este foarte simplă, setul de componente poate fi lăsat pe setările implicite.
Lansați ICD, apăsați pe placa „Pregătire suplimentară”, indicați numele și folderul proiectului și apăsați „Următorul”. În fereastra următoare, alegeți „Toate versiunile Windows pentru desktop” și apăsați „Următorul”. Importul pachetului de pregătire poate fi trecut cu vederea, apăsați „Finalizare”.
Extindeți meniul derulant „Setări de mediu de execuție”, apoi extindeți submeniul „AssignedAccess” și selectați punctul „MultiAppAssignedAccessSettings”. În partea de sus a secțiunii centrale a ferestrei ICD, apăsați butonul „Răsfoire” și indicați locația fișierului XML cu setările. Pentru orice eventualitate, puteți salva proiectul apăsând „Ctrl+s”. În partea stângă sus a ICD, selectați „Export” și din meniul derulant alegeți „Pachet de pregătire”. Ca proprietar, alegeți „Administrator IT”; toate celelalte întrebări pot fi trecute cu vederea, apăsând „Următorul”, iar la final apăsați „Construire” și „Finalizare”.
În sistemul instalat, nu uitați să creați utilizatorul „User”, acesta nu trebuie adăugat în grupul „Administratori”, altfel kiosk-ul nu va funcționa. Am creat utilizatorul în consolă „Managementul computerului” cu o parolă fără termen de valabilitate.
Acum lansăm pachetul de pregătire în sistemul instalat anterior. După aplicarea pachetului de pregătire, meniul de start și contul de administrator se vor schimba. În coloana din stânga a meniului de start, butoanele „Documente”, „Imagini”, „Setări” ar trebui să dispară. Dacă meniul de start nu s-a schimbat, atunci ceva a mers prost. Pachetul instalat poate fi șters dacă deschideți fereastra „Setări > Conturi > Acces la contul de lucru sau de învățare > Adăugare sau ștergere a pachetului de pregătire”.
Dacă meniul de start s-a schimbat, atunci setările au fost aplicate sistemului, conectați-vă cu utilizatorul pentru care este configurat multiscreenele și verificați rezultatul.
Metoda nr. 2
Aplicarea setărilor folosind „MDM Bridge WMI Provider” . Avantajul acestei metode este flexibilitatea utilizării și posibilitatea de a scăpa de multe operații manuale necesare pentru a crea un pachet de pregătire. Aici fiecare își poate crea o soluție care să fie confortabilă pentru el. Eu am realizat o astfel de pereche de scripturi.
MiltiKiosk.bat – scriptul de lansare
@echo off
chcp 1251>nul
if not exist "%~dp0psexec.exe" call :ShowMessage "‡‡‡‡‡‡‡‡‡‡‡‡‡Pentru funcționarea scriptului este necesar fișierul psexec.exe‡‡Pentru a încheia execuția scriptului, apăsați orice tastă"&pause>nul&exit
net session>nul 2>nul
if %errorLevel% neq 0 (powershell -command "Start-Process "%~s0" -Verb RunAs"&exit)
for /f "tokens=2 delims==" %%i in ('wmic useraccount where "Name='%UserName%'" get SID /value^|find "SID"') do set SID=%%i
reg add HKU%SID%SoftwareSysinternalsPsExec /v EulaAccepted /t REG_DWORD /d 1 /f
for /f %%i in ('dir "%~dp0%~n0*.ps1" /b /o:n') do set PSFilePath=%~dp0%%i
if not defined PSFilePath (echo Fișierele PS cu începutul denumirii - "%~n0" nu au fost găsite&pause&exit)
set PSFilePath=%PSFilePath: =` %
"%~dp0psexec.exe" -i -s powershell -command "Start-Process powershell.exe -ArgumentList '-ExecutionPolicy Unrestricted -Command %PSFilePath%'"
exit
:ShowMessage
setlocal enabledelayedexpansion
set String=%~1
if not defined String (echo.&setlocal disabledelayedexpansion&goto :eof)
set /a ConCols=120 & set /a Num=1
set "String[!Num!].str=%String:‡=" & set /a Num+=1 & set "String[!Num!].str=%"
for /l %%a in (1,1,%Num%) do (
for /l %%b in (0,1,%ConCols%) do if "!String[%%a].str:~%%b!" == "" (set "String[%%a].str= !String[%%a].str! "&set /a String[%%a].len-=1) else (set /a String[%%a].len+=0||set /a String[%%a].len=0)
if not defined String[%%a].str (set String[%%a].str= )
if not !String[%%a].len! equ 0 (call set String[%%a].str=%%String[%%a].str:~,!String[%%a].len!%%)
if "!String[%%a].str: =!"=="" (echo.) else (echo !String[%%a].str!))
setlocal disabledelayedexpansion
goto :eofMiltiKiosk_Ver.12.ps1 – scriptul principal
Funcția ConvertEncoding ([string]$From, [string]$To) {
Începe{$encFrom = [System.Text.Encoding]::GetEncoding($From);$encTo = [System.Text.Encoding]::GetEncoding($To)}
Proces{$bytes = $encTo.GetBytes($_);$bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes);$encTo.GetString($bytes) -replace [char]0, ''}
}
Funcția ShowMessage ($Message='', $Align=0) {
Încearcă {$Align = [decimal]$Align} Captură {Return 'Pentru parametrul Align poate fi specificat doar un număr' | ConvertEncoding 'windows-1251' -To 'UTF-16'}
if ($Message -is [int]) {for ($i=1; $i -le $Message; $i++) {Write-Host}; Return}
if ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$Message = $Message | ConvertEncoding 'windows-1251' -To 'UTF-16'}
if ($Message -is [string]) {[array] $Message = $Message}
foreach ($String in $Message) {
Încearcă {$String = [int]$String} Captură {}
if ($String -is [int]) {for ($i=1; $i -le $String; $i++) {Write-Host}; continuă}
if ($Host.UI.RawUI.BufferSize.Width -gt $String.Length) {
if ($Align -eq 0) {Write-Host $String
} else {Write-Host ("{0}{1}" -f (' ' * (([Math]::Max(0, $Host.UI.RawUI.BufferSize.Width \/ $Align) - [Math]::Floor($String.Length \/ $Align)))), $String)}
} else {Write-Host $String}
}
}
$script:NameSpace="rootcimv2mdmdmmap"
$script:ClassName="MDM_AssignedAccess"
$script:MultiAppKiosk = Get-CimInstance -Namespace $NameSpace -ClassName $ClassName
if (-not $MultiAppKiosk) {ShowMessage -Message (3, 'Eroare la obținerea obiectului de setări', 2, 'Apăsați "Enter" pentru a încheia executarea scriptului') -Align 2; Read-Host; Exit}
Funcția MainMenu() {
ShowMessage (13, ' 0 - Ieșire', ' 1 - Alegeți fișier XML pentru instalare', ' 2 - Afișați configurația curentă a multi-kiosk-ului', ' 3 - Ștergeți setările multi-kiosk-ului', 1)
$local:PromptText = 'Alegeți acțiunea'
if ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$PromptText = $PromptText | ConvertEncoding 'windows-1251' -To 'UTF-16'}
$local:Selections = 1..2
While ($true) {
$Select = Read-Host -Prompt $PromptText
Switch ($Select) {
0 {exit}
1 {XMLSelection}
2 {ShowMessage -Message (1, 'Pornire configurație') -Align 2; Write-Host $MultiAppKiosk.Configuration; ShowMessage -Message ('Sfârșitul configurației', 1, 'Pentru a reveni la meniu apăsați "Enter"', 1) -Align 2; Read-Host}
3 {$MultiAppKiosk.Configuration = $Null; Set-CimInstance -CimInstance $MultiAppKiosk; ShowMessage -Message (1, 'Comandă de ștergere a setărilor executată', 1) -Align 2}
DEFAULT {ShowMessage 'Valoare selectată invalidă'}
}
if ($Selections -contains $Select) {Clear-Host; ShowMessage (15, ' 0 - Ieșire', ' 1 - Alegeți fișier XML pentru instalare', ' 2 - Afișați configurația curentă a multi-kiosk-ului', ' 3 - Ștergeți setările multi-kiosk-ului', 1)}
}
}
Funcția XMLSelection() {
Clear-Host
if (!(Test-Path -Path $PSScriptRoot'XML')) {ShowMessage -Message (13, 'Directorul nu a fost găsit', $('"'+$PSScriptRoot+'XML"'), 1, 'Apăsați "Enter" pentru a reveni la meniul anterior') -Align 2; Read-Host; Return}
$local:XMLList = @()
$XMLList += Get-ChildItem -Path $PSScriptRoot'XML' -name -filter '*.xml'
if ($XMLList.Count -eq 0) {ShowMessage -Message (13, 'Niciun fișier XML găsit în director', $('"'+$PSScriptRoot+'XML"'), 1, 'Apăsați "Enter" pentru a reveni la meniul anterior') -Align 2; Read-Host; Return}
[int]$local:Indent = 13 - $XMLList.Count \/ 2; if ($Indent -lt 1) {$Indent = 1}
ShowMessage ($Indent, ' 0 - Întoarcere la meniul anterior')
for ($i=0; $i -le $XMLList.GetUpperBound(0); $i++) {Write-Host $(' '+($i+1)+' - '+$XMLList[$i])}
Write-Host
$local:PromptText = 'Alegeți fișierul pentru instalare'
if ([System.Text.Encoding]::Default.WindowsCodePage -eq 1252) {$PromptText = $PromptText | ConvertEncoding 'windows-1251' -To 'UTF-16'}
$local:Selections = 1..$XMLList.Count
$local:BackToPrevMenu = 0
While ($BackToPrevMenu -eq 0) {
$Select = Read-Host -Prompt $PromptText
Switch ($Select) {
0 {$BackToPrevMenu = 1}
{$Selections -contains $Select} {ShowMessage $('Această comandă aplică setările din fișierul '+$XMLList[$Select-1]);
$local:Config = (Get-Content -encoding UTF8 -path $($PSScriptRoot+'XML'+$XMLList[$Select-1]) -Raw).Trim()
$local:GUIDs = [regex]::matches($Config, '{.+?}') | select -ExpandProperty Value | Get-Unique
foreach ($GUID in $GUIDs) {$Config = $Config -replace $(''+$GUID),$('{'+[guid]::NewGuid()+'}')}
$Config = $Config -replace '&','&' -replace '<','<' -replace '>','>' -replace "'",''' -replace '"','"'
$MultiAppKiosk.Configuration = $Config
Set-CimInstance -CimInstance $MultiAppKiosk
}
DEFAULT {ShowMessage ('Valoare selectată invalidă')}
}
}
}
MainMenuDacă doriți să folosiți soluția mea, salvați în aceeași folder scripturile menționate anterior cu numele lor originale și puneți acolo fișierul „PsExec.exe”. În același folder, creați un folder „XML” și copiați acolo fișierele XML pentru configurarea multi-kiosk-ului. Voi folosi același fișier ca în prima metodă.
MultiAppKiosk.xml
<![CDATA[
]]>
UserCâteva detalii despre caracteristicile scriptului. Scriptul este destinat utilizării fișierelor XML cu codificarea „UTF8”; dacă doriți să folosiți codificarea „ANSI”, eliminați parametrul „encoding UTF8” din parametrul de citire a fișierului. În folderul „XML” trebuie să plasați fișiere XML fără înlocuirea simbolurilor, scriptul va înlocui singur caracterele speciale cu denumirile corespunzătoare. Pentru a nu vă pierde în GUID-urile legării utilizatorilor de profile, puteți pur și simplu să indicați numărul sau numele utilizatorului în acolade, tot conținutul din acolade va fi înlocuit cu GUID-uri.
Folosirea scriptului este foarte simplă, îl lansați și alegeți opțiunea dorită. Pentru a schimba configurația curentă cu una nouă, nu este necesar să eliminați configurația curentă, aceasta va fi suprascrisă. Nu uitați să creați utilizatorii menționați în fișierul de configurare.
Când vizualizați configurația curentă a multi-kiosk-ului în aceeași sesiune în care a fost aplicată, în loc de caractere speciale se vor afișa combinații de caractere de înlocuire. După schimbarea sesiunii (repornirea scriptului), toate caracterele speciale vor fi afișate în forma lor originală.
Pasul 7 – sigilarea sistemului
Multi-kiosk-ul funcționează, deci asta e tot, sau așa ar părea...
Dacă totul decurge conform planului, înseamnă că nu observați ceva.
Nu uitați că trebuie să traducem sistemul din modul de audit în modul de întâmpinare. Ei bine, suntem pregătiți pentru asta, lansăm „Sysprep.bat”, alegem opțiunea 2, sistemul este sigilat. Pornim dispozitivul, sistemul se încarcă, ne logăm în contul utilizatorului pentru care a fost configurat multi-kiosk-ul și nu putem să ne conectăm. După mesajul „Bun venit”, apare mesajul „Ieșire din sistem”.
Inițial, am vrut să descriu doar soluția problemei, dar mai târziu am decis să descriu pașii de identificare a problemei și căutarea celei mai simple soluții, deoarece cu siguranță mulți dintre cei care citesc vor avea nelămuriri - „Dar dacă așa...”. Cred că descrierea experimentelor va economisi o parte semnificativă din timpul vostru dacă doriți să găsiți o altă soluție. Pentru ca informația să fie cât mai precisă și pentru a mă asigura că nu sunt greșeli, voi face descrierea experimentelor în formatul „am făcut - am notat”. Adică, voi repeta experimentele descrise.
Experimente
Ce am realizat. În sistem sunt două conturi:
„Admin” – în grupa „Administratori”
„User” – în grupa „Utilizatori”
În modul audit, modul kiosk funcționa, dar închise – nu mai funcționează.
Experiment 1
Îndepărtăm pachetul de configurare instalat, în consola „Gestionare computer” îl ștergem pe utilizatorul „User” și creăm un nou utilizator cu numele „User”, aplicăm pachetul de configurare, ne conectăm la contul „User” – nu funcționează. Ne conectăm ca „Admin”, ștergem utilizatorul „User” din grupa „Utilizatori”, îl adăugăm în grupa „Administratori”, ne conectăm ca „User” – nu funcționează. Ne conectăm ca „Admin”, îndepărtăm pachetul de configurare cu modul kiosk, ne conectăm ca „User” – am reușit să intru, dar, desigur, modul kiosk nu funcționează deoarece pachetul de configurare a fost șters.
Experiment 2
Încărcăm imaginea sistemului – localizată în modul audit.
Sistemul a pornit, apăsăm „Win+r”, deoarece fereastra sysprep s-a închis automat, executăm comanda „sysprep”, în fereastra deschisă lansăm „sysprep”. Setările sysprep în fereastră: „Trecere la fereastra de întâmpinare a sistemului (OOBE)”, „Pregătire pentru utilizare”, „Reboot”. Apăsăm „OK” și așteptăm întâmpinarea sistemului de operare. Răspundem la întrebările de la prima pornire a sistemului: „Continuați în limba selectată?” – „română”; regiunea – România; layout-ul tastaturii – Română; adăugați un al doilea layout de tastatură – săriți; „Să vă conectăm la rețea” – „Săriți deocamdată”; conectați-vă la internet – nu; acordul de licență – acceptați; „Cine va folosi acest computer” – „Test”; crearea unei parole – las câmpul gol; lucru convenabil pe diferite dispozitive – nu; setările de confidențialitate – acceptați. Sistemul de operare a pornit, în instrumentul „Managementul computerului” creăm un utilizator cu numele „User”, adăugăm pachetul de pregătire. Rezultatul – nu funcționează.
Experiment 3
Încărcăm imaginea sistemului – localizată în modul audit.
Sistemul a pornit, conectăm sistemul la internet, executăm comanda „gpedit.msc” și în secțiunea „Centrul de actualizări Windows” activăm parametrul „Activați actualizările recomandate prin actualizare automată”, de precauție ne repornim. În centrul de actualizări apăsăm „Verificați actualizările” și ne repornim până la instalarea tuturor actualizărilor. Deconectăm sistemul de la internet. Lansăm „sysprep” în modul grafic și repetăm toate acțiunile descrise în pasul anterior cu lansarea utilitarului „sysprep” până la adăugarea pachetului de pregătire. Rezultatul – nu funcționează.
Experiment 4
Încărcăm imaginea sistemului – în engleză în modul audit.
Lansăm „sysprep” în modul grafic, sigilăm sistemul de operare cu aceleași parametri ca în timpul experimentului 2. La prima pornire a sistemului, selectăm aceleași parametri ca în experimentul 2, cu excepția parametrilor regionali și de limbă deoarece nu există limba română. La fel creăm utilizatorul „User” și adăugăm pachetul de pregătire. Rezultatul – funcționează. Asta înseamnă că problema este legată de localizare.
Experiment 5
Încărcăm imaginea sistemului – localizată în modul audit.
În instrumentul „Managementul computerului” creăm utilizatorul „User”, adăugăm pachetul de pregătire, ne conectăm la contul „User”, funcția de animații funcționează.
Ieșim din cont, ne conectăm cu contul „Admin”. Lansăm PowerShell cu drepturi de administrator, executăm comanda „Dism /online /Get-Intl” și vedem „Limba interfeței utilizatorului implicit: en-US”.
Ne boot-ăm de pe un stick USB în WinPE, sistemul de operare este desfășurat pe discul E. Executăm comanda „Dism /image:E: /Set-UILang:ro-ro”. Verificăm rezultatul, executăm „Dism /image:E: /Get-Intl” și vedem „Limba interfeței utilizatorului implicit: ro-RO”.
Ne încărcăm în sistem, ne conectăm cu contul „User”, mulțikiosk-ul nu funcționează.
Pentru a stabiliza corect legătura cauză-efect a problemei, vom încerca din nou să facem mulțikiosk-ul funcțional și nefuncțional.
Ne boot-ăm de pe un stick USB în WinPE, sistemul de operare este desfășurat pe discul E. Executăm comanda „Dism /image:E: /Set-UILang:en-us”. Verificăm rezultatul, executăm „Dism /image:E: /Get-Intl” și vedem „Limba interfeței utilizatorului implicit: en-US”.
Ne încărcăm în sistem, ne conectăm cu contul „User”, mulțikiosk-ul funcționează.
Ne boot-ăm de pe un stick USB în WinPE, sistemul de operare este desfășurat pe discul E. Executăm comanda „Dism /image:E: /Set-UILang:ro-ro”. Verificăm rezultatul, executăm „Dism /image:E: /Get-Intl” și vedem „Limba interfeței utilizatorului implicit: ro-RO”.
Ne încărcăm în sistem, ne conectăm cu contul „User”, mulțikiosk-ul nu funcționează.
Deci, putem observa o dependență clară a funcționării kiosk-ului de valoarea limbii interfeței utilizatorului implicite. Există poate și alți factori care influențează funcționarea mulțikiosk-ului?
Experimentul 6
Pentru claritate, reinstalăm sistemul. Încărcăm o imagine de sistem – tradusă în modul audit.
Executăm „sysprep” în modul grafic, sigilăm sistemul de operare cu aceleași setări ca și în timpul experimentului 2. Așteptăm întâmpinarea sistemului de operare și răspundem la întrebări: „Continuați în limba selectată?” – „English (United States)”; regiune – Rusia; configurare tastatură – Rusă. Apoi, toate setările sunt alese ca și în experimentul 2.
Verificăm parametrii valorii limbii interfeței utilizatorului implicite. Executăm comanda „Dism /online /Get-Intl” și vedem „Limba interfeței utilizatorului implicit: en-US”. În consola „Managementul computerului” creăm utilizatorul „User”, adăugăm pachetul de pregătire, ne conectăm în contul „User”, mulțikiosk-ul funcționează.
Încercăm să defectăm kiosk-ul prin schimbarea limbii interfeței utilizatorului implicite. Ne conectăm la utilizatorul „Test”, care a fost creat la prima pornire a sistemului și activăm pentru el conectarea automată pentru ca sistemul să nu se încarce direct în contul „User”. Executăm „netplwiz”, selectăm utilizatorul „Test”, debifăm căsuța „Cere introducerea numelui de utilizator și a parolei” și aplicăm setările.
Ne încărcăm de pe USB în WinPE. Executăm comanda „Dism /image:E: /Set-UILang:ro-RO”. Ne uităm la rezultat, executăm „Dism /image:E: /Get-Intl” și vedem „Default system UI language: ro-RO”.
Ne încărcăm în sistem, încercăm să ne conectăm la contul „User”, kiosk-ul multimedia funcționează. Adică nu se poate strica. Dar se poate face să funcționeze în acest mod?
Experimentul 7
Încărcăm imaginea sistemului – localizată în modul audit.
Rulăm „Sysprep.bat”, alegem opțiunea 2. Ne încărcăm în sistem, în consola „Managementul computerului” creăm utilizatorul „User”, adăugăm pachetul de pregătire, ne conectăm la contul „User”, kiosk-ul multimedia nu funcționează.
Ne încărcăm de pe USB în WinPE. Executăm comanda „Dism /image:E: /Set-UILang:en-US”. Ne uităm la rezultat, executăm „Dism /image:E: /Get-Intl” și vedem „Default system UI language: en-US”.
Ne încărcăm în sistem, încercăm să ne conectăm la contul „User”, kiosk-ul multimedia nu funcționează.
Deci, se pare că prin modificarea setării limbii interfeței utilizatorului implicite se poate influența funcționalitatea kiosk-ului multimedia doar când sistemul este în modul audit sau la prima pornire după sigilarea sistemului. Asta înseamnă că va trebui să sigilăm sistemul cu un fișier de răspuns în care va fi aleasă limba sistemului engleză, iar apoi să schimbăm setările sistemului pentru a avea interfața în română. Nu este o soluție foarte bună. Poate problema poate fi rezolvată prin instalarea pachetului de limbă sau instalarea pachetelor de limbă suplimentare?
Experimentul 8
Încărcăm imaginea sistemului – în engleză în modul audit.
Ne conectăm la internet, în setările sistemului mergem la secțiunea „Language” alegem „Add language”, alegem limba „Română”, facem clic pe „Next”, păstrăm opțiunile de instalare implicite, facem clic pe „Install”, după instalarea pachetului de limbă repornim sistemul, acum este localizat în română. Deconectăm sistemul de la internet, rulăm „Sysprep.bat”, alegem opțiunea 2.
După pornirea sistemului, în consola „Managementul computerului” creăm utilizatorul „User”, adăugăm pachetul de pregătire, ne conectăm la contul „User”, kiosk-ul multimedia nu funcționează.
Experimentul 9
Vom încerca să localizăm sistemul înainte de instalare, în modul offline. De asemenea, va fi un scurt ghid despre localizarea distribuției.
Iau o unitate flash cu un distribuitor original curat – X21-96381. Aceasta va fi unitatea „E”. Pentru a monta imaginile, creez foldere: „c:MountInstall”, „c:MountWinre”, „c:MountBoot”. Ia un set de pachete de localizare – X21-87814. Și copiez din el în folderul „c:Mount” pachetele: „Microsoft-Windows-Client-Language-Pack_x86_ro-ro.cab”, „lp.cab”, „WinPE-Setup_ro-ro.cab”. Deschid consola cu drepturi de administrator. Cred că comenzile următoare vor fi clare fără comentarii.
Comenzi de localizare
cd c:mount
dism /Mount-Wim /WimFile:e:sourcesinstall.wim /index:1 /MountDir:Installcode
dism /Image:Install /Add-Package /PackagePath:Microsoft-Windows-Client-Language-Pack_x86_ro-ro.cabcode
dism /Image:Installcode /Set-AllIntl:ro-ro
dism /Image:Install /Set-TimeZone:"Ora Standard Rusă"code
dism /Mount-Wim /WimFile:InstallWindowsSystem32RecoveryWinre.wim /index:1 /MountDir:Winrecode
dism /Image:Winre /Add-Package /PackagePath:lp.cabcode
dism /Image:Winrecode /Set-AllIntl:ro-ro
dism /Image:Winre /Set-TimeZone:"Ora Standard Rusă"code
dism /Unmount-Image /MountDir:Winre /Commitcode
dism /Image:Install /Gen-LangINI /distribution:E: /Set-AllIntl:ro-RUcode
dism /image:Install /Set-SetupUILang:RO-ro /distribution:E:code
dism /Unmount-Image /MountDir:Install /Commitcode
dism /mount-wim /wimfile:e:sourcesboot.wim /index:1 /mountdir:Bootcode
dism /Image:Boot /Add-Package /PackagePath:lp.cabcode
dism /Image:Bootcode /Set-AllIntl:ro-ro
copy e:sourceslang.ini Bootsourceslang.inicode
dism /Unmount-Image /MountDir:Boot /Commitcode
dism /mount-wim /wimfile:e:sourcesboot.wim /index:2 /mountdir:Bootcode
dism /Image:Boot /Add-Package /PackagePath:lp.cabcode
dism /Image:Boot /Add-Package /PackagePath:WinPE-Setup_ro-ro.cabcode
dism /Image:Bootcode /Set-AllIntl:ro-ro
copy e:sourceslang.ini Bootsourceslang.ini /ycode
dism /Unmount-Image /MountDir:Boot /CommitSe încarcă de pe unitatea flash, alegem limba română și instalăm sistemul pe un disc curat. Când sistemul solicită să alegem regiunea, apăsăm „Ctrl+Shift+F3”. În instrumentul „Gestionarea computerului”, creăm utilizatorul „User”, adăugăm pachetul de pregătire, intrăm în contul „User”, iar kiosk-ul multimedia nu funcționează.
Se încarcă de pe unitatea flash în WinPE. Executăm comanda „Dism /image:E: /Set-UILang:en-us”.
Se încarcă în sistem, încercăm să intrăm în contul „User”, kiosk-ul multimedia funcționează.
Se pare că problema nu este metodele de adăugare a pachetului, să încercăm să adăugăm pachete suplimentare.
Experiment 10
Luăm unitatea flash pe care am pregătit-o în pasul anterior.
Luăm pachetul „Feat on Demand” – X21-87815. În folderul „c:Mount” copiez din el pachetele: „Microsoft-Windows-LanguageFeatures-Basic-ro-ro-Package~31bf3856ad364e35~x86~~.cab”, „Microsoft-Windows-LanguageFeatures-OCR-ro-ro-Package~31bf3856ad364e35~x86~~.cab”, „Microsoft-Windows-LanguageFeatures-Handwriting-ro-ro-Package~31bf3856ad364e35~x86~~.cab”, „Microsoft-Windows-LanguageFeatures-TextToSpeech-ro-ro-Package~31bf3856ad364e35~x86~~.cab”.
Luăm pachetul „Feat on Demand RDX Updt” – X21-99781. În folderul „c:Mount” copiez din el pachetele: „Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~x86~~.cab”, „Microsoft-Windows-RetailDemo-OfflineContent-Content-ru-ru-Package~31bf3856ad364e35~x86~~.cab”.
Deschidem consola cu drepturi de administrator și executăm comenzile:
Comenzi
cd c:mount
dism /Mount-Wim /WimFile:e:sourcesinstall.wim /index:1 /MountDir:Install
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-Basic-ru-ru-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-OCR-ru-ru-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-Handwriting-ru-ru-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-LanguageFeatures-TextToSpeech-ru-ru-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~x86~~.cab
dism /Add-Package /Image:Install /PackagePath:Microsoft-Windows-RetailDemo-OfflineContent-Content-ru-ru-Package~31bf3856ad364e35~x86~~.cab
dism /Unmount-Image /MountDir:Install /CommitBootăm de pe stick, alegem limba română și instalăm sistemul pe un disc gol. Când sistemul ne cere să alegem regiunea, apăsăm „Ctrl+Shift+F3”. În tool-ul „Gestionare Computer” creăm utilizatorul „User”, adăugăm pachetul de pregătire și intrăm în contul „User”. Am obținut un ecran negru, care a rămas mult timp blocat, așa că am efectuat o repornire forțată a sistemului.
Ștergem pachetul de pregătire, ne conectăm cu utilizatorul „User”, repornim sistemul, adăugăm pachetul de pregătire, și multikineto-ul nu funcționează.
Se încarcă de pe unitatea flash în WinPE. Executăm comanda „Dism /image:E: /Set-UILang:en-us”.
Se încarcă în sistem, încercăm să intrăm în contul „User”, kiosk-ul multimedia funcționează.
Soluționarea problemei
Eroii normali. Întotdeauna ocolesc!
Diferitele metode de instalare a pachetelor de localizare nu au rezolvat problema, astfel că va trebui să instalăm limbajul „en-us” la prima încărcare după sigilare, iar după prima încărcare să schimbăm setările de limbă.
Încărcăm imaginea sistemului – localizată în modul audit.
În fișierul „Unattend.xml” introducem „en-US” în parametru, executăm „Sysprep.bat”, alegem opțiunea 2 și vedem ce am obținut. Ecranul de întâmpinare este în limba engleză, multikineto-ul – funcționează. Asta înseamnă că trebuie să adăugăm în „Unattend.xml” comanda de schimbare a limbii de întâmpinare. Și pentru asta este necesar să executăm comanda „control intl.cpl,,/f:” cu indicarea fișierului de configurare, în care va fi specificată copierea parametrilor curenți în ecranul de întâmpinare. Conținutul fișierului de configurare va arăta astfel.
Pentru că va avea loc copierea setărilor utilizatorului curent, comanda trebuie executată după ce utilizatorul se conectează la sistem, ceea ce înseamnă că ne vor trebui. Există o mică „problemă”, executarea se va face după ce utilizatorul se conectează cu drepturi de administrator. Și nu aș dori să creez un fișier suplimentar, care ar fi necesar pentru executarea cu succes a comenzii. Ar fi mai bine să implementăm întreaga soluție într-un singur fișier - „Unattend.xml”. Pentru aceasta, va trebui să executăm comanda care creează fișierul de configurare. Cred că voi crea fișierul de configurare folosind comanda „echo” în mediu „cmd”, dar în aceasta este necesar să se escapeze unghiile cu circumflex. Adică, pentru a crea fișierul de configurare, obținem următoarea comandă.
echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/ ^>^</gs:UserList^>^</gs:GlobalizationServices^>>Config.xmlDar această comandă trebuie inclusă în XML, care are propriile cerințe pentru utilizarea caracterelor speciale:
Caracter special
Valoare substitutivă
>
>
<
<
&
&
‘
'
“
"
În cele din urmă, pentru a crea fișierul de configurare, am obținut următoarea comandă pentru „FirstLogonCommands”.
cmd.exe /c echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/^>^</gs:UserList^>^</gs:GlobalizationServices^>>"%TMP%Config.xml"Apoi executăm comanda folosind fișierul de configurare.
control intl.cpl,,/f:"%TMP%Config.xml"Mai departe, ștergem fișierul creat anterior și repornim sistemul, deoarece modificările vor avea efect după repornire.
cmd.exe /c del "%TMP%Config.xml" /q&shutdown /r /f /t 00În final, am obținut un fișier de răspunsuri pentru sysprep.
Unattend.xml
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f
1
Nu arătați pagina cu cheia
reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f
2
Nu creați cont
cmd.exe /c rd %systemdrive%Sysprep /s /q
3
Ștergeți folderul
true
Admin
en-US; ro-RO
ro-RO
en-US
ro-RO
true
true
true
true
true
1
cmd.exe /c echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/^>^</gs:UserList^>^</gs:GlobalizationServices^>>"%TMP%Config.xml"
CreareConfig
1
control intl.cpl,,/f:"%TMP%Config.xml"
UtilizeazăConfig
2
cmd.exe /c del "%TMP%Config.xml" /q&shutdown /r /f /t 00
ȘtergeConfig
3Verificăm...
Încărcăm imaginea sistemului – localizată în modul audit.
Schimbăm fișierul Unattend.xml cu unul nou, pornim „Sysprep.bat”, alegem punctul 2 și vedem ce am obținut. La prima pornire, ecranul de binevenire în limba engleză, sistemul se repornește. Ecranul de binevenire în limba română, modul de funcționare kiosk este activat.
Dacă aveți întrebări cu privire la configurarea și licențierea Windows 10 IoT Enterprise, vă rugăm să ne contactați la sau să vizitezi site-ul .
Răspunsuri la unele întrebări puteți găsi în sau pe
Autorul articolului: Borisenkov Vladimir, expert tehnic la compania Quarta Technologies.
Sursa: habr.com
