Windows 10 IoT Enterprise 2019 - plurkioska reĝimo

Enkonduko

Windows 10 IoT Enterprise 2019 estas la merkata nomo por la sekva eldono de Windows 10. La eldono de ĉi tiu versio estis anoncita en septembro 2018, respektive, ĝi havas version 1809, 18 estas la jaro, 09 estas la monato. Multaj artikoloj estis skribitaj pri la nova eldono de Windows 10 1809, sed la plej multaj el ili estas dediĉitaj al diversaj "buloj", "beluloj" kaj diversaj funkcioj, kiuj estas postulataj hejme.
Ĉi tiu artikolo nur diskutos pri funkcieco, kiu povas esti postulata inter produktantoj de fikscelaj aparatoj. Nome pri la novaj kapabloj de la "Kiosko" reĝimo. La temo ŝanĝi la nomojn de servoskemoj por Vindozaj eldonoj de la entreprena segmento ankaŭ estos tuŝita.

Malnova servoskemo kun nova nomo

Mi komencu per mallonga klarigo: en la kompania segmento de Vindozaj eldonoj ekzistas du servoskemoj laŭ kiuj Vindozo ricevas ĝisdatigojn. Servodiagramoj havas liternomon. Nuntempe la servobranĉoj estas nomitaj LTSC kaj SAC.

LTSC signifas Longtempa Servado-Kanalo (kun longtempa bontenado). Antaŭe, tia kanalo nomiĝis LTSB - Long Term Servicing Branch.Mikrosofto simple ŝanĝis la nomon de la servokanalo, la servo mem restis la sama.

Microsoft ankaŭ ŝanĝis la nomon de la servobranĉo CBB - Nuna Branĉo por Komerco, nun ĉi tiu servobranĉo nomiĝas SAC - Semi-Ĉiujara Kanalo. Denove, nur la nomo ŝanĝiĝis.

Sed menciindas, ke la filioj pri servo de LTSC kaj SAC uzas malsamajn Vindozajn distribuojn.

Iom pri la nova kioska reĝimo ĉe SAC

Kiel mi jam diris, LTSC kaj SAC havas malsamajn distribuojn. LTSC ne havas normajn universalajn programojn aŭ programbutikon, sed SAC havas. Sekve, LTSC ne havas Edge-retumilon, sed SAC havas. Se vi elektas la Edge-retumilon dum la agordo de kiosko, tiam du reĝimoj nun disponeblas:

  1. Kiel cifereca signo aŭ interaga ekrano
  2. Kiel publika retumilo

Mi ne detenos pri agordo de ĉi tiuj reĝimoj, ĉar... La agordo estas tre simpla kaj estas farita en grafika interfaco. Nur kreu uzanton, kiu ne estas membro de la grupo Administrantoj, ebligu kioskan reĝimon por li uzante EDGE kaj vidu kiel funkcias ĉi tiuj reĝimoj.

Kiosko kun multaj aplikoj

Iuj homoj opinias, ke licencita uzo Vindozo 10 IoT-Entrepreno implicas la funkciadon de nur unu aplikaĵo sur la aparato, fakte ĉi tio ne estas la kazo. La aparato devas esti desegnita por plenumi ununuran komercan taskon kaj la uzanto ne devas havi aliron al labortablo. Nun Microsoft mem donis la ilon por uzi multajn aplikojn. Ĉi tiu reĝimo nomiĝas "multi-app-kiosko"; poste, por koncize, mi nomos ĝin "multikiosk". En ĉi tiu artikolo ni rigardos agordi ĉi tiun reĝimon uzante la programaron kaj kelkajn el la funkcioj de ĉi tiu reĝimo.

Iom pri la Multikiosk-reĝimo

Kiam vi ensalutas al uzantkonto por kiu plurkioska reĝimo estas agordita, la sistemo funkcios en tabuleta reĝimo. La Komenca menuo vastiĝos al plena ekrano, montrante aplikaĵkahelojn.

Listo de bazaj agordoj kaj reĝimkapabloj:

  1. Agordo por pluraj uzantoj aŭ grupoj
  2. Ĉiu uzanto aŭ grupo povas esti asignitaj individuaj agordoj
  3. Kapablo uzi universalajn kaj klasikajn aplikojn
  4. La kapablo aŭtomate lanĉi unu el la aplikaĵoj kiam la uzanto ensalutas
  5. Blanklistigitaj aplikoj
  6. Aliro al dosierujoj per blanka listo

Indas atenti la punkton 5. Defaŭlte, nur tiuj aplikaĵoj, kiuj estas necesaj por la sistemo funkcii, rajtos funkcii, aliaj aplikaĵoj devas esti aldonitaj al la listo de permesitaj. Tiuj. Nun vi ne bezonas agordi AppLocker aparte. Cetere, por eviti konfliktojn kun AppLocker-agordoj, en plur-kioska reĝimo, ĉiuj agorditaj AppLocker-reguloj ne aplikiĝos.

Punkto 6 indikas bonan eblon, sed nuntempe nur eblas doni skribpermeson al la dosierujo "Elŝutoj". La reĝimo permesas uzi universalajn kaj klasikajn aplikojn. Ĉiuj reĝimaj agordoj estas specifitaj en XML-dosiero, en kiu vi ankaŭ povas specifi agordojn por ununura aplikaĵa kiosko.

Nun ni provu agordi ĉion...

Kion ni bezonas...

  1. Antaŭ ĉio, ni bezonas la sistemon mem, kiu subtenas multikioskan reĝimon. Ĉi tie vi povas elŝuti demo versio
  2. Instrukcioj por starigo de multkiosko
  3. Ajna XML-redaktilo
  4. Por apliki plurkioskajn agordojn:
    1. Por metodo n-ro 1 - ICD, kiu estas parto de la ADK. ADK eblas elŝuti ĉi tie
    2. Por metodo n-ro 2 - la utileco PsExec. La utileco povas esti elŝuti ĉi tie

Li diris - "Ni iru!"

Mi faros ĉiujn eksperimentojn pri komerca versio de Windows 10 IoT Enterprise 1809 LTSC x32, ne demo-versio. La sistemo ne estos aktivigita ĉar manko de aktivigo ne influas la funkciecon de la sistemo. Mi prenis 32 bitojn nur ĉar ĝi okupas malpli da spaco kaj estos pli rapide labori kun sistemaj bildoj.

Paŝo 1 - instalado

Instali Win 10 IoT Enterprise ne diferencas de instali Win 10 Enterprise, do mi ne priskribos la tutan instalan procezon, mi nur parolos pri iuj el la nuancoj.

Por la okazo, mi memorigu vin, ne instalu la sistemon super la instalita. Kiam la instalilo demandas pri la installoko de la sistemo, forigu ĉiujn subdiskojn sur la estonta sistema disko kaj specifu nediskonigitan diskon.

Ni instalas la sistemon sen interreta konekto por ke la sistemo ne eltiru ion nenecesan.

Ĉar Ni kreos rezervajn bildojn de la sistemo kaj por tio ni sigelos ĝin en revizia reĝimo, tiam vi povas ŝpari iom da tempo ŝarĝante la sistemon en revizia reĝimo tuj post instalado. Por fari tion, kiam la sistemo petas vin elekti regionon “Ni komencu per regiono. Ĉu tio estas ĝusta" nur premu "Ctrl+Majsku+F3".

Paŝo 2 - kreu sisteman bildon

Ĉar ni mokos la sistemon kaj provos diversajn novajn agordojn, eble io misfunkcios kaj ni devos redoni la sistemon al sia originala stato. Kaj por rapide reveni al ĝia originala stato, vi devas krei sisteman bildon. La nura afero, kiun mi faros, estas kopii la "ilaron de sinjoro" - la skripton kaj la responddosieron. Ĉiuj miaj dosieroj troviĝas en la dosierujo "Sysprep", kiun mi kopias al la radiko de la sistema disko. Kaj nature, mi dividos ĉi tiun "sinjoran aron" kun vi.

Sysprep.bat - por sigeli la sistemon.

@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 %AdminName%>nul 2>nul
if %errorLevel% neq 0 (call :AddAdmin "%AdminName%")
if %errorLevel% neq 0 (call :ShowMessage "‡‡‡Ошибка создания новой учетной записи администратора "%AdminName%"‡‡Нажмите любую клавишу для завершения работы скрипта"&pause>nul&exit)

pushd "%~dp0"

cls
call :ShowMessage ‡‡‡‡‡‡‡‡‡‡
echo  1 - Запечатать систему в режиме аудита
echo  2 - Запечатать систему в режиме приветствия
:Select
set /p Choice="Введите номер пункта меню: "
if "%Choice%"=="1" (goto Audit)
if "%Choice%"=="2" (goto OOBE)
echo.&echo Выбрано недопустимое значение.&goto Select

exit

:Audit
    call :ShowMessage "‡‡‡‡‡Запечатывание системы в режиме аудита"
    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 "‡‡‡‡‡Запечатывание системы в режиме приветствия"
    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 Не указано имя пользователя&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 %AdminGroup% %UserName% /add
    net localgroup %UserGroup% %UserName% /delete
    endlocal&exit /b 0
goto :eof

:GetGroupName
    if "%~1"=="" (echo Не указан SID группы&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 Ошибка определения имени группы по SID'у "%~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 :eof

Kiam estas lanĉita, la skripto kontrolos la ĉeeston de la "Admin" konto kaj kreos unu se ĝi mankas. La konto estos aldonita al la grupo Administrantoj.

Unattend.xml - responddosiero por sysprep.

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="specialize">
        <component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f</Path>
                    <Order>1</Order>
                    <Description>Dont show key page</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f</Path>
                    <Order>2</Order>
                    <Description>Dont make account</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>cmd.exe /c rd %systemdrive%Sysprep /s /q</Path>
                    <Order>3</Order>
                    <Description>Del Folder</Description>
                </RunSynchronousCommand>
            </RunSynchronous>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AutoLogon>
                <Enabled>true</Enabled>
                <Username>Admin</Username>
            </AutoLogon>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>en-US; ru-RU</InputLocale>
            <SystemLocale>ru-RU</SystemLocale>
            <UILanguage>ru-RU</UILanguage>
            <UILanguageFallback></UILanguageFallback>
            <UserLocale>ru-RU</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <ProtectYourPC>1</ProtectYourPC>
            </OOBE>
        </component>
    </settings>
</unattend>

Sigelinte en revizia reĝimo, la skripto aldonos komandon al la registro por fini la procezon "sysprep.exe" por ne fermi la sysprep-fenestron permane ĉiufoje. Se sigelite en saluta reĝimo, la skripto forigos la komandon por fermi la fenestron de la registro kaj mem ŝanĝos la arkitekturvaloron en la responddosiero al la nuna. La responddosiero enhavas parametrojn por ekŝalti la sistemon sen interago de uzanto kaj komandon por forigi la dosierujon "Sysprep" en la radiko de la sistema disko.

Nun mi sigelos la sistemon en revizia reĝimo uzante "Sysprep.bat" kaj kaptos bildon de la sistemo. Mi bildigos la sistemon uzante DISM kaj bildigos nur la sisteman volumon. Se vi bildos nur la sisteman volumon, kaj ne la tutan diskon, tiam ne forgesu kopii la enhavon de la dosierujo "WindowsSystem32Recovery" al la unua volumo en la dosierujon "RecoveryWindowsRE" post deplojado de la sistemo. Ĉi tio devos esti farita antaŭ ol ŝarĝi la OS. post ŝarĝo de la OS, la dosierujo "WindowsSystem32Recovery" jam estos malplena.

Paŝo 3 - Rusigo de la sistemo

La lingvopakaĵo povas esti instalita sen interreta konekto se vi havas ĉi tiun pakon. Se ne, la sistemo mem elŝutos ĝin de la Interreto kiam vi aldonos la lingvon en la agordojn. Nur ne bezonas preni la lingvopakaĵon de antaŭaj versioj de la OS. Por Windows 10 1809 devas ekzisti lingvopako specife por Windows 10 1809.

Microsoft sekvas sian planon iom post iom translokigi agordojn de la klasika menuo al la nova, do en la klasika kontrolpanelo vi ne plu trovos agordojn por ŝanĝi la lingvon kaj instali lingvopakaĵon. Ĉi tiuj agordoj nun estas nur en la sistemaj parametroj.

En revizia reĝimo, vi povas renkonti problemon por malfermi sistemajn agordojn el la Komenca menuo; por malfermi sistemajn agordojn, rulu la komandon - "ms-settings:", atentu la dupunktojn ĉe la fino de la komando, sen ĝi la komando estos. ne funkcias. Post malfermi la sistemajn parametrojn unufoje uzante ĉi tiun komandon, ĝi povas esti malfermita per la grafika menuo.

Sed en la sistemaj agordoj vi povas instali lingvopakaĵon se la sistemo estas konektita al Interreto, ne ekzistas elekto por elekti instali lingvopakaĵon el loka dosiero.

Mi ne priskribos la procezon de lokalizado de la sistemo ĉar... tio signife malfaciligos la artikolon, precipe ĉar la lokaliza procezo estas detala priskribita ĉi tie. Sed mi ŝatus atentigi vin pri la propreco ŝanĝi la sistemlingvon post instalo de lingvopakaĵo uzante la konzolon. Ĉi tiu funkcio estas priskribita en la sama vikio al kiu mi disponigis ligilon pli frue, en la subfako "Aldono de lingvo al la listo de lingvoj".

Mi instalos la lingvopakaĵon sen interreta konekto.

Post kompleta lokalizo de la sistemo, nepre kreu bildon de la sistemo.

Paŝo 4 - Instalu la necesajn aplikojn

Ĉar Ĉar LTSB kaj LTSC-sistemoj ne havas aplikaĵbutikon, instali aplikaĵojn el la Microsoft Store kaŭzas kelkajn malfacilaĵojn, nome elŝuti la aplikaĵon. Por elŝuti aplikaĵojn, la kompanio Adguard faris tre oportunan servon - "Adguard Store", kun kiu vi povas akiri provizorajn elŝutajn ligilojn por aplikaĵoj kaj iliaj komponantoj.

Por instali la aplikaĵon, vi bezonos dosierojn kun la etendoj "Appx" kaj "AppxBundle". Antaŭ ol instali la aplikaĵon mem, vi devas instali ĝiajn komponantojn. Kiel regulo, komponantoj de aplikaĵo povas esti intuicie distingitaj per la dosiernomo.

Por ne fari la artikolon tro longa, mi ne detale priskribos la procezon de instalado de aplikaĵoj, precipe ĉar ekzistas informoj pri instalado. detalaj instrukcioj. Sed mi aldonos unu plian manieron instali aplikaĵojn en vian nunan konton. Aplikoj povas esti instalitaj uzante la programon "Aplikilo", sed por instali aplikaĵojn vi bezonos interretan konekton, sed aplikaĵoj povas esti instalitaj per duobla klako kaj vi ne bezonos ĝiajn komponantojn, ĉiuj necesaj komponantoj elŝutos kaj instalos "Aplikilo".

Kaj malgranda memorigilo, kiam vi instalas la aplikaĵon en la nunan konton, vi ne povos sigeli la sistemon. Kiel instali aplikaĵojn por sigeli la sistemon, vidu la suprajn instrukciojn. Kaj por kontroli la funkciadon de la multikiosko, ekzistantaj aplikoj estas sufiĉe sufiĉaj.

Paŝo 5 - kreante agordan dosieron por la multikiosko

Nun ni venas al la plej interesa parto - agordi la kioskan reĝimon. Ni rigardu instrukcio laŭ la agordoj, kiujn ni vidas. Antaŭ ĉio, ni devos krei XML-agordan dosieron, plena ekzemplo de kiu troveblas ĉi tie. rigardu ĉi tien.

Ni komencu agordante la kahelan aranĝon. La plej facila maniero krei XML-kahelan personigo-konfiguracion estas eksporti sian nunan staton.

Antaŭ ĉio, ni aldonu kahelojn de la aplikaĵoj, kiujn ni bezonas al la Komenca menuo. Voku la serĉon "Win+s", trovu la deziratan aplikaĵon, dekstre alklaku ĝin kaj elektu "Alpingli al Komenca Ekrano".

Mi alpinglis la jenajn apojn:

  • Notepad
  • Kalkulilo
  • interreto Explorer
  • pentri
  • WordPad
  • parametroj
  • Vindozo sekureco

La lastaj du aplikoj estis alpinglitaj ĉar... Simple ekzistas neniuj aliaj universalaj aplikoj en la norma LTSC-pakaĵo. Notu, ke labortablaj kaheloj ligas al ŝparvojoj. Nun, movante la kahelojn rekte en la Komenca menuo, mi apartigos la alpinglitajn kahelojn en du grupojn. Por krei novan grupon da kaheloj, trenu kahelon signife pli altan aŭ pli malaltan ol aliaj kaheloj, kiuj reliefigos intuician dividilon. Vi povas nomi la grupojn laŭ via bontrovo; por fari tion, metu la muskursonon super la grupon, kaj kiam aperas la surskribo "Nomu la grupon", alklaku la maldekstran musbutonon. Mi nomos la unuan grupon "Agordoj", ĝi inkluzivos la kahelojn "Agordoj" kaj "Vindoza Sekureco". Mi nomos la duan grupon "Oficejaj Aplikoj", kiu inkluzivos ĉiujn aliajn kahelojn. Cetere, vi povas movi tutajn grupojn da kaheloj trenante ilin per la du strioj, kiuj troviĝas supre dekstre de la grupnomo.

Ĉar Sur la kahelo "Vindoza Sekureco" la nomo ne tute taŭgas, mi ŝanĝos ĝian grandecon al "Larĝa". Por ŝanĝi la grandecon de kahelo, dekstre alklaku la kahelon kaj elektu "Regrandigi".

Post agordo, ni eksportas la nunan staton kaj plenumas la komandon en la medio PowerShell - "Export-StartLayout - vojo C:SysprepStartLayout.xml".

Poste, la plej facila maniero estas ne krei la agordan dosieron mem, sed prenu ekzemplodosieron de ĉi tie agordojn - alklaku la butonon "Kopii", algluu la enhavon en notblokon kaj konservu kiel "MultiAppKiosk.xml". Nun ni ŝanĝas la agordojn al nia propra. Por ŝanĝi la agordojn de kunigitaj kaheloj, kopiu la tutan blokon "StartLayoutCollection" de "StartLayout.xml" al "MultiAppKiosk.xml". Por aldoni aplikojn al la permesitaj, vi devas enmeti universalajn aplikajn identigilojn en la sekcion "AllowedApps" kaj en la sama bloko aldoni la plenan vojon al la plenumeblaj dosieroj de klasikaj aplikoj, kiu estas specifita en la propraĵoj de la ŝparvojoj al kiuj la kaheloj referencas. Por rapide atingi ŝparvojon, dekstre alklaku alpinglita kahelo kaj iru al Pli > Iru al Dosiera Loko. Notu, ke la parametro "AppUserModelId" estas uzata por specifi la Universalan App-ID, kaj la parametro "DesktopAppPath" estas uzata por specifi la plenan vojon al la labortabla aplikaĵo. Kaj ankoraŭ unu malgranda nuanco, se vi planas uzi IE en sistemo x64, tiam en la listo de permesitaj aplikoj vi devas specifi du vojojn por la plenumebla dosiero "ProgramdosierojInternet Exploreriexplore.exe" kaj "Programdosieroj (x86)Internet Exploreriexplore. EXE".

Mi ne donos aliron al dosierujoj, do mi forigas la sekcion "FileExplorerNamespaceRestrictions".

Montri la taskobreton ne ĝenas min, do mi lasas ĉion tia, kia ĝi estas en la sekcio "Taskbaro".

En la ekzemplo, du profiloj estas specifitaj, sed mi havos nur unu profilon, do la sekcio kun la dua profilo povas esti forigita. Antaŭ ol malinstali, atentu la ekzemplon de aŭtomate komenci aplikaĵon kun argumentoj.

En la sekcio "Agordoj", kontoj estas ligitaj al profiloj; bonvolu noti, ke pluraj kontoj povas esti ligitaj al unu profilo. Sed ĉar Mi interesiĝas nur pri unu konto, tiam mi forigos ĉiujn ligojn krom la unua - la blokoj "Config". En la restanta bindado mi skribos la uzantnomon "Uzanto".

Mi ricevis ĉi tiun dosieron kun parametroj

MultiAppKiosk.xml

<?xml version="1.0" encoding="utf-8" ?>
<AssignedAccessConfiguration 
  xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config"
  xmlns:rs5="http://schemas.microsoft.com/AssignedAccess/201810/config"
  >
  <Profiles>
      <Profile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}">
          <AllAppsList>
              <AllowedApps>
                  <App AppUserModelId="WINDOWS.IMMERSIVECONTROLPANEL_CW5N1H2TXYEWY!MICROSOFT.WINDOWS.IMMERSIVECONTROLPANEL" />
                  <App AppUserModelId="Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI" />
                  <App DesktopAppPath="%windir%system32notepad.exe" />
                  <App DesktopAppPath="C:Program FilesInternet Exploreriexplore.exe" />
                  <App DesktopAppPath="%windir%system32win32calc.exe" />
                  <App DesktopAppPath="%windir%system32mspaint.exe" />
                  <App DesktopAppPath="%ProgramFiles%Windows NTAccessorieswordpad.exe" />
              </AllowedApps>
          </AllAppsList>
          <StartLayout>
              <![CDATA[<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
                    <LayoutOptions StartTileGroupCellWidth="6" />
                    <DefaultLayoutOverride>
                      <StartLayoutCollection>
                        <defaultlayout:StartLayout GroupCellWidth="6">
                          <start:Group Name="Настройки">
                            <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="WINDOWS.IMMERSIVECONTROLPANEL_CW5N1H2TXYEWY!MICROSOFT.WINDOWS.IMMERSIVECONTROLPANEL" />
                            <start:Tile Size="4x2" Column="2" Row="0" AppUserModelID="Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI" />
                          </start:Group>
                          <start:Group Name="Офисные приложения">
                            <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesWordpad.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%MicrosoftWindowsStart MenuProgramsAccessoriesNotepad.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesCalculator.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesPaint.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%APPDATA%MicrosoftWindowsStart MenuProgramsAccessoriesInternet Explorer.lnk" />
                          </start:Group>
                        </defaultlayout:StartLayout>
                      </StartLayoutCollection>
                    </DefaultLayoutOverride>
                  </LayoutModificationTemplate>
              ]]>
          </StartLayout>
          <Taskbar ShowTaskbar="true"/>
      </Profile>
  </Profiles>
  <Configs>
      <Config>
          <Account>User</Account>
          <DefaultProfile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"/>
      </Config>
  </Configs>
</AssignedAccessConfiguration>

Kiam vi faras viajn XML-agordajn dosierojn, ne forgesu, ke ĉiu profilo devas havi unikan identigilon, kaj ne nur ene de unu XML-dosiero, sed ene de unu OS. Tiuj. Ideale, por eviti konfuzon, vi povas krei novan identigilon ĉiufoje; ĉi tio povas esti farita en la PowerShell-medio uzante la komandon "[guid]::NewGuid()". Kaj nepre konservu la dosieron en "UTF-8"-kodigo; se la dosiero estas konservita en "ANSI"-kodigo, tiam dum konstruado de la preparpakaĵo vi ricevos eraron se la XML-dosiero enhavas cirilan.

Paŝo 6 - aplikante multikioskajn agordojn

Ni rigardu du manierojn apliki la agordojn priskribitajn en la agorda dosiero. La unua estas per provizado-pakaĵo, kiu devas esti kreita en ICD. Por iuj, eble ĉi tiu metodo estos pli konata. La dua uzas la "MDM Bridge WMI Provider", ĉi tiu metodo ŝajnis al mi pli oportuna.

Metodo # 1

Kiu ne havas ICD? elŝutu ADK kaj instali. Instali ADK estas tre simpla; la aro de komponantoj povas esti lasita kiel defaŭlta.

Lanĉu ICD, alklaku la kahelon "Altnivela preparado", specifu la nomon kaj dosierujon de la projekto kaj alklaku "Sekva". En la sekva fenestro, elektu "Ĉiuj eldonoj de Vindoza labortablo" kaj alklaku "Sekva". Vi povas preterlasi importadon de la preparpakaĵo; alklaku "Fini".

Vastigu la falmenuon "Runtime Settings", tiam vastigu la submenuon "AssignedAccess" kaj elektu "MultiAppAssignedAccessSettings". Ĉe la supro de la meza sekcio de la ICD-fenestro, alklaku la butonon "Trarigardi" kaj indiku la lokon de la XML-dosiero kun la agordoj. Ĉiaokaze, vi povas konservi la projekton premante "Ctrl+s". En la supra maldekstra parto de la ICD, elektu "Eksporti" kaj elektu "Provizora Pako" el la falmenuo. Kiel posedanto, elektu "IT-administranto"; ĉiuj aliaj demandoj povas esti preterlasitaj alklakante "Sekva" kaj fine alklaku "Konstrui" kaj "Finigi".

En la instalita sistemo, ne forgesu krei uzanton "Uzanto"; li ne povas esti aldonita al la grupo "Administrantoj", alie la multikiosko ne funkcios. Mi kreis uzanton en Komputila Administrado kun pasvorto, kiu neniam eksvalidiĝas.

Nun ni rulas la preparpakaĵon sur la antaŭe instalita sistemo. Post aplikado de la preparpakaĵo, la Komenca menuo kaj la menuo de la administranto ŝanĝiĝos. En la maldekstra komenca kolumno la butonoj devus malaperi: "Dokumentoj", "Bildo", "Opcioj". Se la startmenuo ne ŝanĝiĝis, tiam io misfunkciis. Instalita pako povas esti forigita per malfermo de la Agordoj > Kontoj > Labora aŭ lerneja konto-aliro > Aldoni aŭ forigi provizantan pakaĵon.

Se la komenca menuo ŝanĝiĝis, tiam la agordoj estas aplikataj al la sistemo, ensalutu kiel la uzanto por kiu la multikiosko estas agordita kaj rigardu la rezulton.

Metodo # 2

Aplikante agordojn per "MDM Bridge WMI Provider" priskribita ĉi tie. La komforto de ĉi tiu metodo estas ĝia fleksebleco de uzo kaj la kapablo forigi multajn manajn operaciojn necesajn por krei preparpakaĵon. Ĉi tie ĉiuj povas fari por si mem decidon, kiu estos oportuna por ili. Mi faris kelkajn skriptojn por mi mem.

MiltiKiosk.bat - lanĉa skripto

@echo off
chcp 1251>nul

if not exist "%~dp0psexec.exe" call :ShowMessage "‡‡‡‡‡‡‡‡‡‡‡‡‡Для работы скрипта необходим файл psexec.exe‡‡Для завершения работы скрипта нажмите любую клавишу"&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 Не найдено PS файлов с началом названия - "%~n0"&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 :eof

MiltiKiosk_Ver.12.ps1 - ĉefa skripto

Function ConvertEncoding ([string]$From, [string]$To) {
    Begin{$encFrom = [System.Text.Encoding]::GetEncoding($From);$encTo = [System.Text.Encoding]::GetEncoding($To)}
    Process{$bytes = $encTo.GetBytes($_);$bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes);$encTo.GetString($bytes) -replace [char]0, ''}
}

Function ShowMessage ($Message='', $Align=0) {
    Try {$Align = [decimal]$Align} Catch {Return 'Для параметра Align может быть указано только число' | 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) {
        Try {$String = [int]$String} Catch {}
        if ($String -is [int]) {for ($i=1; $i -le $String; $i++) {Write-Host}; continue}
        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, 'Ошибка получения объекта настроек', 2, 'Нажмите "Enter" для завершения рабты скрипта') -Align 2; Read-Host; Exit}

Function MainMenu() {
    ShowMessage (13, ' 0 - Выход', ' 1 - Выбрать XML-файл для установки', ' 2 - Показать текущую конфигурацию мультикиоска', ' 3 - Удалить настройки мультикиоска', 1)
    $local:PromptText = 'Выберите действие'
    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, 'Начало конфигурации') -Align 2; Write-Host $MultiAppKiosk.Configuration; ShowMessage -Message ('Конец конфигурации', 1, 'Для возврата в меню нажмите "Enter"', 1) -Align 2; Read-Host}
            3 {$MultiAppKiosk.Configuration = $Null; Set-CimInstance -CimInstance $MultiAppKiosk; ShowMessage -Message (1, 'Выполнена команда удаления настроек', 1) -Align 2}
            DEFAULT {ShowMessage 'Выбрано недопустимое значение'}
        }
        if ($Selections -contains $Select) {Clear-Host; ShowMessage (15, ' 0 - Выход', ' 1 - Выбрать XML-файл для установки', ' 2 - Показать текущую конфигурацию мультикиоска', ' 3 - Удалить настройки мультикиоска', 1)}
    }
}

Function XMLSelection() {
    Clear-Host

    if (!(Test-Path -Path $PSScriptRoot'XML')) {ShowMessage -Message (13, 'Не найден каталог', $('"'+$PSScriptRoot+'XML"'), 1, 'Нажмите "Enter" для возврвта в предыдущее меню') -Align 2; Read-Host; Return}

    $local:XMLList = @()
    $XMLList += Get-ChildItem -Path $PSScriptRoot'XML' -name -filter '*.xml'
    if ($XMLList.Count -eq  0) {ShowMessage -Message (13, 'Не найдено XML-файлов в каталоге', $('"'+$PSScriptRoot+'XML"'), 1, 'Нажмите "Enter" для возврвта в предыдущее меню') -Align 2; Read-Host; Return}

    [int]$local:Indent = 13 - $XMLList.Count / 2; if ($Indent -lt 1) {$Indent = 1}
    ShowMessage ($Indent, ' 0 - Вернуться в предыдущее меню')
    for ($i=0; $i -le $XMLList.GetUpperBound(0); $i++) {Write-Host $(' '+($i+1)+' - '+$XMLList[$i])}
    Write-Host
    $local:PromptText = 'Выберите файл для установки'
    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 $('Дана команда на применение настроек из файла '+$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 ('Выбрано недопустимое значение')} 
        }
    }
}

MainMenu

Se vi volas uzi mian solvon, tiam konservu la suprajn skriptojn kun iliaj originalaj nomoj en unu dosierujo kaj metu la dosieron "PsExec.exe" en la saman dosierujon. En la sama dosierujo, kreu "XML" dosierujon kaj kopiu la XML-dosierojn por agordi la multikioskon en ĝin. Mi uzos la saman dosieron kiel en la unua metodo.

MultiAppKiosk.xml

<?xml version="1.0" encoding="utf-8" ?>
<AssignedAccessConfiguration 
  xmlns="http://schemas.microsoft.com/AssignedAccess/2017/config"
  xmlns:rs5="http://schemas.microsoft.com/AssignedAccess/201810/config"
  >
  <Profiles>
      <Profile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}">
          <AllAppsList>
              <AllowedApps>
                  <App AppUserModelId="WINDOWS.IMMERSIVECONTROLPANEL_CW5N1H2TXYEWY!MICROSOFT.WINDOWS.IMMERSIVECONTROLPANEL" />
                  <App AppUserModelId="Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI" />
                  <App DesktopAppPath="%windir%system32notepad.exe" />
                  <App DesktopAppPath="C:Program FilesInternet Exploreriexplore.exe" />
                  <App DesktopAppPath="%windir%system32win32calc.exe" />
                  <App DesktopAppPath="%windir%system32mspaint.exe" />
                  <App DesktopAppPath="%ProgramFiles%Windows NTAccessorieswordpad.exe" />
              </AllowedApps>
          </AllAppsList>
          <StartLayout>
              <![CDATA[<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
                    <LayoutOptions StartTileGroupCellWidth="6" />
                    <DefaultLayoutOverride>
                      <StartLayoutCollection>
                        <defaultlayout:StartLayout GroupCellWidth="6">
                          <start:Group Name="Настройки">
                            <start:Tile Size="2x2" Column="0" Row="0" AppUserModelID="WINDOWS.IMMERSIVECONTROLPANEL_CW5N1H2TXYEWY!MICROSOFT.WINDOWS.IMMERSIVECONTROLPANEL" />
                            <start:Tile Size="4x2" Column="2" Row="0" AppUserModelID="Microsoft.Windows.SecHealthUI_cw5n1h2txyewy!SecHealthUI" />
                          </start:Group>
                          <start:Group Name="Офисные приложения">
                            <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesWordpad.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%MicrosoftWindowsStart MenuProgramsAccessoriesNotepad.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesCalculator.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%MicrosoftWindowsStart MenuProgramsAccessoriesPaint.lnk" />
                            <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%APPDATA%MicrosoftWindowsStart MenuProgramsAccessoriesInternet Explorer.lnk" />
                          </start:Group>
                        </defaultlayout:StartLayout>
                      </StartLayoutCollection>
                    </DefaultLayoutOverride>
                  </LayoutModificationTemplate>
              ]]>
          </StartLayout>
          <Taskbar ShowTaskbar="true"/>
      </Profile>
  </Profiles>
  <Configs>
      <Config>
          <Account>User</Account>
          <DefaultProfile Id="{9A2A490F-10F6-4764-974A-43B19E722C23}"/>
      </Config>
  </Configs>
</AssignedAccessConfiguration>

Iom pri la trajtoj de la skripto. La skripto estas desegnita por uzi XML-dosierojn kun "UTF8"-kodigo; se vi volas uzi "ANSI"-kodigon, tiam forigu la "kodigan UTF8" parametron de la opcio de legado de dosieroj. Vi devas meti XML-dosierojn en la dosierujon "XML" sen anstataŭigi signojn; la skripto mem anstataŭigos specialajn signojn per la taŭgaj nomoj. Por ne konfuziĝi pri la GUID-oj pri ligado de uzantoj al profiloj, vi povas simple indiki la uzantnumeron aŭ nomon en buklaj krampoj; ĉiuj enhavoj en buklaj krampoj estos anstataŭigitaj per GUID-oj.

Uzi la skripton estas tre simpla, simple rulu ĝin kaj elektu la postulatan eron. Por ŝanĝi la nunan agordon al nova, ne necesas forigi la nunan; ĝi estos anstataŭita. Ne forgesu krei uzantojn kiuj estas specifitaj en la agorda dosiero.

Vidante la nunan multikioskan agordon en la sama sesio en kiu ĝi estis aplikita, anstataŭ specialaj signoj, kombinaĵoj de anstataŭaj signoj estos montrataj. Post ŝanĝado de la sesio (rekomencante la skripton), ĉiuj specialaj signoj montriĝos en sia originala formo.

Paŝo 7 - Sigelo de la Sistemo

La multkiosko funkcias, nu, jen ĉio, ŝajnus...

Se ĉio iras laŭplane, tiam vi ne rimarkas ion.

Ne forgesu, ke ni ankoraŭ bezonas ŝanĝi la sistemon de revizia reĝimo al bonvena reĝimo. Nu, ni pretas por ĉi tio, ni lanĉas "Sysprep.bat", elektu punkton 2, la sistemo estas sigelita. Ni ŝaltas la aparaton, la sistemo ekfunkciigas, ni ensalutas al la uzantkonto por kiu la multikiosko estas agordita, sed ni ne povas ensaluti. Post la mesaĝo "Bonvenon", aperas la mesaĝo "Elsaluti".

Komence mi volis priskribi nur la solvon de la problemo, sed poste mi decidis priskribi la paŝojn por identigi la problemon kaj trovi la plej simplan solvon ĉar... Certe multaj legantoj estos turmentitaj de neklaraj duboj - "Kio se ĝi estas tiel...". Mi pensas, ke priskribi la diversajn eksperimentojn ŝparos al vi signifan tempon, se vi volas trovi alian solvon. Por ke la informoj estu kiel eble plej precizaj, kaj por denove certigi, ke ne estas eraroj, mi priskribos la eksperimentojn en la formato "farita kaj registrita". Tiuj. Mi denove faros la priskribitajn eksperimentojn.

Eksperimentoj

Kion ni faris? Estas du kontoj en la sistemo:

"Administranto" - en la grupo "Administrantoj".
"Uzanto" - en la grupo "Uzantoj".
En revizia reĝimo, la multkiosko funkciis, sed kiam sigelite, ĝi ne funkciis.

Eksperimento 1

Ni forigas la instalitan preparpakaĵon, en la alkroĉilo "Komputila Administrado" ni forigas la uzanton "Uzanto" kaj kreas novan uzanton kun la nomo "Uzanto", aplikas la preparan pakon, iru al la "Uzanto" konto - ĝi faras ne funkcias. Ni iras sub la nomon "Administranto", forigu la uzanton "Uzanto" el la grupo "Uzantoj", aldonu ĝin al la grupo "Administrantoj", iru sub la nomon "Uzanto" - ĝi ne funkcias. Ni ensalutu sub la nomo "Admin", forigu la preparpakaĵon kun la multikiosko, ensalutu sub la nomo "Uzanto" - ni sukcesis ensaluti, sed kompreneble la multikiosko ne funkcias ĉar La provizanta pako estis forigita.

Eksperimento 2

Ni alŝutas la sistembildon - Rusigitan en revizia reĝimo.

La OS ŝargis, premu "Win + r", ĉar Nia sysprep-fenestro aŭtomate fermiĝis, rulu la komandon "sysprep" kaj rulu "sysprep" en la fenestro, kiu malfermiĝas. Agordoj de Sysprep en la fenestro: "Iru al la bonvena fenestro de la sistemo (OOBE)", "Preparante por uzo", "Reboot". Alklaku "Bone" kaj atendu la saluton de OS. Ni respondas la demandojn kiam la sistemo ekfunkciigas por la unua fojo: "Ĉu daŭrigi en elektita lingvo?" - "rusa"; regiono – Rusio; klavararanĝo - rusa; aldoni duan klavaran aranĝon - salti; "Let's connect you to the network" - "Saltu por nun"; konekti al la Interreto - ne; license agreement - akcepti; "Kiu uzos ĉi tiun komputilon" - "Testo"; kreante pasvorton - lasu la kampon malplena; Konvena operacio sur malsamaj aparatoj - ne; Privatecaj agordoj - akceptu. La OS ŝargis, en la "Komputila Administrado" alklakaĵo ni kreas uzanton kun la nomo "Uzanto", aldonu la preparpakaĵon. La rezulto estas, ke ĝi ne funkcias.

Eksperimento 3

Ni alŝutas la sistembildon - Rusigitan en revizia reĝimo.

La OS ŝargis, konektu la sistemon al la Interreto, rulu la komandon "gpedit.msc" kaj en la sekcio "Windows Update" ebligu la opcion "Ebligi rekomenditajn ĝisdatigojn per aŭtomataj ĝisdatigoj", rekomencu ĉiaokaze. En la ĝisdatiga centro, alklaku "Kontrolu ĝisdatigojn" kaj rekomencu ĝis ĉiuj ĝisdatigoj estas instalitaj. Malkonekti la sistemon de la Interreto. Ni lanĉas "sysprep" en grafika reĝimo kaj ripetas ĉiujn paŝojn priskribitajn en la antaŭa paŝo de rulado de la ilo "sysprep" ĝis aldono de la preparpakaĵo. La rezulto estas, ke ĝi ne funkcias.

Eksperimento 4

Ni alŝutas la sistembildon - anglan en revizia reĝimo.

Ni lanĉas "sysprep" en grafika reĝimo, sigelas la OS per la samaj parametroj kiel dum la eksperimento 2. Kiam la sistemo unue ekfunkciigas, ni elektas la samajn parametrojn kiel en eksperimento 2, escepte de regionaj kaj lingvaj parametroj ĉar Ne ekzistas rusa lingvo. En la sama maniero, kreu uzanton "Uzanto" kaj aldonu provizantan pakon. La rezulto estas, ke ĝi funkcias. Tiuj. La problemo rilatas al lokalizo.

Eksperimento 5

Ni alŝutas la sistembildon - Rusigitan en revizia reĝimo.

En la aligaĵo "Komputila Administrado", kreu uzanton "Uzanto", aldonu preparan pakon, iru al la konto "Uzanto", la mult-kiosko funkcias.

Elsalutu el via konto kaj ensalutu sub la "Admin" konto. Ni lanĉas PowerShell kun administranto-rajtoj, ekzekutas la komandon "Dism /online /Get-Intl" kaj vidu "Defaŭlta uzantinterfaco lingvo: eo-Usono".

Ni ekfunkciigas de la poŝmemoro en WinPE, la deplojita OS estas sur mia E-disko. Ni plenumas la komandon "Dism /image:E: /Set-UILang:ru-ru". Ni rigardas la rezulton, ekzekutu "Dism /image:E: /Get-Intl" kaj vidu "Defaŭlta sistema UI-lingvo: ru-RU".

Ni startas en la sistemon, ensalutu al la konto "Uzanto", la multikiosko ne funkcias.

Por klare establi la kaŭzo-efikan rilaton de la problemo, ni provu denove igi la mult-kioskon funkcianta kaj nefunkcia.

Ni ekfunkciigas de la poŝmemoro en WinPE, la deplojita OS estas sur mia E-disko. Ni plenumas la komandon "Dism /image:E: /Set-UILang:en-us". Ni rigardas la rezulton, ekzekutu "Dism /image:E: /Get-Intl" kaj vidu "Defaŭlta sistema UI-lingvo: en-US".

Ni ekfunkciigas la sistemon, ensalutu al la konto "Uzanto", la multikiosko funkcias.

Ni ekfunkciigas de la poŝmemoro en WinPE, la deplojita OS estas sur mia E-disko. Ni plenumas la komandon "Dism /image:E: /Set-UILang:ru-ru". Ni rigardas la rezulton, ekzekutu "Dism /image:E: /Get-Intl" kaj vidu "Defaŭlta sistema UI-lingvo: ru-RU".

Ni startas en la sistemon, ensalutu al la konto "Uzanto", la multikiosko ne funkcias.

Tiuj. vi povas vidi klaran dependecon de la agado de la kiosko de la defaŭlta uzantinterfaco-lingvo. Eble estas iuj aliaj faktoroj, kiuj influas la agadon de la multikiosko?

Eksperimento 6

Por la pureco de la eksperimento, ni replenigas la sistemon. Ni alŝutas la sistembildon - Rusigitan en revizia reĝimo.

Ni lanĉas "sysprep" en grafika reĝimo, sigelas la OS per la samaj parametroj kiel dum eksperimento 2. Ni atendas ke la OS salutos nin kaj respondas la demandojn: "Ĉu Daŭri en elektita lingvo?" – “La angla (Usono)”; regiono – Rusio; Klavaro aranĝo - rusa. Plue, ĉiuj parametroj estis elektitaj kiel en eksperimento 2.

Ni rigardu la defaŭltajn lingvajn agordojn de uzantinterfaco. Ni plenumas la komandon "Dism /online /Get-Intl" kaj vidu "Defaŭlta sistema UI-lingvo: eo-Usono". En la aligaĵo "Komputila Administrado", kreu uzanton "Uzanto", aldonu preparan pakon, iru al la konto "Uzanto", la mult-kiosko funkcias.

Ni provas rompi la kioskon ŝanĝante la defaŭltan uzantinterfacan lingvon. Ni eniras la uzanton "Testo", kiu estis kreita kiam la sistemo unue ekŝaltis kaj ebligas aŭtomatan ensaluton por ĝi, por ke la sistemo ne startu en la konton "Uzanto" tuj. Efektivigu "netplwiz", elektu la uzanton "Testo", malmarku la markobutonon "Bezonu uzantnomon kaj pasvorton" kaj apliku la parametrojn.

Lanĉu de poŝmemoro en WinPE. Efektivigu la komandon "Dism /image:E: /Set-UILang:ru-ru". Ni rigardas la rezulton, ekzekutu "Dism /image:E: /Get-Intl" kaj vidu "Defaŭlta sistema UI-lingvo: ru-RU".

Ni startas en la sistemon, provas ensaluti al la "Uzanto" konto, la multikiosko funkcias. Tiuj. ĝi ne povas esti rompita. Ĉu eblas igi ĝin funkcii tiel?

Eksperimento 7

Ni alŝutas la sistembildon - Rusigitan en revizia reĝimo.

Ni lanĉas "Sysprep.bat", elektu la punkton 2. Ni ekfunkciigas en la sistemon, kreas la uzanton "Uzanto" en la "Komputila Administrado", aldonu la preparpakaĵon, iru al la "Uzanto" konto, la multi-. kiosko ne funkcias.

Lanĉu de poŝmemoro en WinPE. Efektivigu la komandon "Dism /image:E: /Set-UILang:en-us". Ni rigardas la rezulton, ekzekutu "Dism /image:E: /Get-Intl" kaj vidu "Defaŭlta sistema UI-lingvo: en-US".

Ni startas en la sistemon, provas ensaluti al la "Uzanto" konto, la multikiosko ne funkcias.

Rezultas, ke ŝanĝante la defaŭltan uzantinterfacon lingvan agordon, vi povas influi la agadon de la multikiosko nur kiam la sistemo estas en revizia reĝimo aŭ ĉe la unua ekkuro post sigelo de la sistemo. Ĉi tio signifas, ke vi devos sigeli la sistemon per responddosiero, en kiu la sistema lingvo estos elektita en la angla, kaj poste ŝanĝi la sistemajn agordojn por ke la interfaco estu rusa. Ne tre bona solvo. Eble la problemo povas esti solvita instalante lingvopakaĵon aŭ instalante pliajn lingvopakaĵojn?

Eksperimento 8

Ni alŝutas la sistembildon - anglan en revizia reĝimo.

Ni konektas al Interreto, en la sistemaj parametroj iru al la sekcio "Lingvo", elektu "Aldoni lingvon", elektu la lingvon "rusa", alklaku "Sekva", lasu la instalajn parametrojn defaŭlte, alklaku "Instali", post instalo. la lingvopakon ni rekomencas la sistemon, nun sur Russified. Malkonektu la sistemon de la Interreto, rulu "Sysprep.bat", elektu la punkton 2.

Post ŝarĝo de la sistemo, en la "Komputila Administrado", kreu la uzanton "Uzanto", aldonu la preparpakaĵon, iru al la "Uzanto" konto, la mult-kiosko ne funkcias.

Eksperimento 9

Ni provu Rusigi la sistemon antaŭ instalo, en eksterreta reĝimo. Samtempe estos mallonga eduka programo pri la lokalizo de la distribuo.

Mi prenas poŝmemorilon kun pura originala distribuo - X21-96381. Ĝi estos stirado "E". Por munti bildojn, mi kreas dosierujojn: “c:MountInstall”, “c:MountWinre”, “c:MountBoot”. Mi prenas aron da lokalizpakaĵoj - X21-87814. Kaj en la dosierujon "c:Mount" mi kopias la pakaĵojn el ĝi: "Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab", "lp.cab", "WinPE-Setup_ru-ru.cab". Mi lanĉas la konzolon kun administrantoj. Mi pensas, ke pliaj ordonoj estos klaraj sen komento.

Lokigaj komandoj

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_ru-ru.cabcode
dism /Image:Installcode /Set-AllIntl:ru-ru
dism /Image:Install /Set-TimeZone:"Russian Standard Time"code

dism /Mount-Wim /WimFile:InstallWindowsSystem32RecoveryWinre.wim /index:1 /MountDir:Winrecode
dism /Image:Winre /Add-Package /PackagePath:lp.cabcode
dism /Image:Winrecode /Set-AllIntl:ru-ru
dism /Image:Winre /Set-TimeZone:"Russian Standard Time"code
dism /Unmount-Image /MountDir:Winre /Commitcode

dism /Image:Install /Gen-LangINI /distribution:E: /Set-AllIntl:ru-RUcode
dism /image:Install /Set-SetupUILang:RU-ru /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:ru-ru
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_ru-ru.cabcode
dism /Image:Bootcode /Set-AllIntl:ru-ru
copy e:sourceslang.ini Bootsourceslang.ini /ycode
dism /Unmount-Image /MountDir:Boot /Commit

Ni ekfunkciigas el la poŝmemoro, elektas la rusan lingvon kaj instalas la sistemon sur malplena disko. Kiam la sistemo petas vin elekti regionon, premu "Ctrl+Shift+F3". En la "Komputila Administrado", kreu uzanton "Uzanto", aldonu preparpakaĵon, iru al la "Uzanto" konto, la mult-kiosko ne funkcias.

Lanĉu de poŝmemoro en WinPE. Efektivigu la komandon "Dism /image:E: /Set-UILang:en-us".

Ni startas en la sistemon, provas ensaluti al la "Uzanto" konto, la multikiosko funkcias.

Ŝajne la problemo ne estas en la metodoj aldoni pakaĵon, ni provu aldoni pliajn pakaĵojn.

Eksperimento 10

Ni prenas la flash drive, kiun ni preparis en la antaŭa paŝo.

Ni prenas la pakaĵon "Feat on Demand" - X21-87815. Mi kopias la pakaĵojn de ĝi al la dosierujo "c:Mount": «Microsoft-Windows-LanguageFeatures-Basic-ru-ru-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-OCR-ru-ru-Package~31bf3856ad364e35~x86~~.cab», «Microsoft-Windows-LanguageFeatures-Handwriting-ru-ru-Package~31bf3856ad364e35~x86~ ~.cab», «Microsoft-Windows-LanguageFeatures-TextToSpeech-ru-ru-Package~31bf3856ad364e35~x86~~.cab».

Берем пакет «Feat on Demand RDX Updt» – X21-99781. В папку «c:Mount» копирую из него пакеты: «Microsoft-Windows-RetailDemo-OfflineContent-Content-Package~31bf3856ad364e35~x86~~.cab», « Microsoft-Windows-RetailDemo-OfflineContent-Content-ru-ru-Package~31bf3856ad364e35~x86~~.cab».

Lanĉu la konzolon kun administrantoj kaj plenumu la komandojn:

Teamoj

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 /Commit

Ni ekfunkciigas el la poŝmemoro, elektas la rusan lingvon kaj instalas la sistemon sur malplena disko. Kiam la sistemo petas vin elekti regionon, premu "Ctrl+Shift+F3". En la kromprogramo "Komputila Administrado", kreu la uzanton "Uzanto", aldonu la provizantan pakon kaj ensalutu en la konton "Uzanto". Mi ricevis nigran ekranon, kiu pendis dum longa tempo, do mi varme ekŝaltis la sistemon.

Ni forigas la preparpakaĵon, ensalutu kiel "Uzanto", rekomencas la sistemon, aldonas la preparpakaĵon, la multikiosko ne funkcias.

Lanĉu de poŝmemoro en WinPE. Efektivigu la komandon "Dism /image:E: /Set-UILang:en-us".

Ni startas en la sistemon, provas ensaluti al la "Uzanto" konto, la multikiosko funkcias.

Solvaĵo

Normalaj herooj. Ili ĉiam prenas ĉirkaŭvojon!

Diversaj metodoj por instali lokalizajn pakojn ne solvis la problemon, kio signifas, ke vi devos instali la lingvon "en-us" ĉe la unua ekkuro post sigelo, kaj ŝanĝi la lingvajn agordojn post la unua ekkuro.

Ni alŝutas la sistembildon - Rusigitan en revizia reĝimo.

En la dosiero "Unattend.xml", enigu "en-US" en la parametron, rulu "Sysprep.bat", elektu punkton 2 kaj vidu, kion ni ricevis. La bonveniga ekrano estas en la angla, la multkiosko funkcias. Ĉi tio signifas, ke vi devas aldoni komandon al "Unattend.xml" por ŝanĝi la salutlingvon. Kaj por fari tion, vi devas ruli la komandon "kontrolo intl.cpl,, /f:" indikante la agordan dosieron, kiu specifos la kopiadon de la nunaj parametroj al la bonveniga ekrano. La enhavo de la agorda dosiero aspektos tiel.

<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
      <gs:UserList>
        <gs:User UserID="Current" CopySettingsToSystemAcct="true"/> 
    </gs:UserList>
</gs:GlobalizationServices>

Ĉar kopios la agordojn de la nuna uzanto, tiam la komando devas esti efektivigita post kiam la uzanto ensalutis, kio signifas, ke ni bezonos. Estas unu malgranda "sed", ekzekuto okazos post kiam uzanto kun administranto rajtoj ensalutas. Kaj mi ne volus krei plian dosieron, kiu bezonus por ke la komando sukcese rulu. Pli bone estas efektivigi la tutan solvon en ununura dosiero - "Unattend.xml". Por fari tion, vi simple devos ruli komandon, kiu kreas agordan dosieron. Mi pensas, ke mi kreos agordan dosieron per la komando "eĥo" en la medio "cmd", sed ĝi devas eskapi la angulajn krampojn per cirkumflekso. Tiuj. Por krei agordan dosieron, la sekva komando estas akirita.

echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>^<gs:UserList^>^<gs:User UserID="Current" CopySettingsToSystemAcct="true"/^>^</gs:UserList^>^</gs:GlobalizationServices^>>Config.xml

Sed ni devas meti ĉi tiun komandon en XML, kiu havas siajn proprajn postulojn por la uzo de specialaj signoj:

Speciala karaktero
Anstataŭa valoro

>
&gt;

<
&lt;

&
&amp;

'
&apos;

"
&quot;

Kiel rezulto, por krei agordan dosieron, ni ricevis la sekvan komandon por "FirstLogonCommands".

cmd.exe /c echo ^&lt;gs:GlobalizationServices xmlns:gs=&quot;urn:longhornGlobalizationUnattend&quot;^&gt;^&lt;gs:UserList^&gt;^&lt;gs:User UserID=&quot;Current&quot; CopySettingsToSystemAcct=&quot;true&quot;/^&gt;^&lt;/gs:UserList^&gt;^&lt;/gs:GlobalizationServices^&gt;&gt;&quot;%TMP%Config.xml&quot;

Poste ni plenumas la komandon per la agorda dosiero.

control intl.cpl,,/f:&quot;%TMP%Config.xml&quot;

Poste, forigu la antaŭe kreitan dosieron kaj rekomencu la sistemon. la ŝanĝoj efektiviĝos post rekomenco.

cmd.exe /c del &quot;%TMP%Config.xml&quot; /q&amp;shutdown /r /f /t 00

Kiel rezulto, mi finis kun la sekva responddosiero por sysprep.

Unattend.xml

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="specialize">
        <component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f</Path>
                    <Order>1</Order>
                    <Description>Dont show key page</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLMSoftwareMicrosoftWindowsCurrentVersionSetupOOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f</Path>
                    <Order>2</Order>
                    <Description>Dont make account</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>cmd.exe /c rd %systemdrive%Sysprep /s /q</Path>
                    <Order>3</Order>
                    <Description>Del Folder</Description>
                </RunSynchronousCommand>
            </RunSynchronous>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AutoLogon>
                <Enabled>true</Enabled>
                <Username>Admin</Username>
            </AutoLogon>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>en-US; ru-RU</InputLocale>
            <SystemLocale>ru-RU</SystemLocale>
            <UILanguage>en-US</UILanguage>
            <UILanguageFallback></UILanguageFallback>
            <UserLocale>ru-RU</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <ProtectYourPC>1</ProtectYourPC>
            </OOBE>
            <FirstLogonCommands>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>cmd.exe /c echo ^&lt;gs:GlobalizationServices xmlns:gs=&quot;urn:longhornGlobalizationUnattend&quot;^&gt;^&lt;gs:UserList^&gt;^&lt;gs:User UserID=&quot;Current&quot; CopySettingsToSystemAcct=&quot;true&quot;/^&gt;^&lt;/gs:UserList^&gt;^&lt;/gs:GlobalizationServices^&gt;&gt;&quot;%TMP%Config.xml&quot;</CommandLine>
                    <Description>CreateConfig</Description>
                    <Order>1</Order>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>control intl.cpl,,/f:&quot;%TMP%Config.xml&quot;</CommandLine>
                    <Description>UseConfig</Description>
                    <Order>2</Order>
                </SynchronousCommand>
                <SynchronousCommand wcm:action="add">
                    <CommandLine>cmd.exe /c del &quot;%TMP%Config.xml&quot; /q&amp;shutdown /r /f /t 00</CommandLine>
                    <Description>DelConfig</Description>
                    <Order>3</Order>
                </SynchronousCommand>
            </FirstLogonCommands>
        </component>
    </settings>

Ni kontrolu...

Ni alŝutas la sistembildon - Rusigitan en revizia reĝimo.

Ni ŝanĝas la Unattend.xml dosieron al nova, rulu "Sysprep.bat", elektu punkton 2 kaj vidu kion ni ricevis. Kiam vi unue ekŝaltas, la bonveniga ekrano estas en la angla kaj la sistemo rekomenciĝas. La bonveniga ekrano estas en la rusa, la multkiosko funkcias.

Se vi havas demandojn pri agordo kaj licencado de Windows 10 IoT Enterprise, bonvolu kontakti: [retpoŝte protektita] aŭ al la retejo quarta-embedded.ru.
Vi povas trovi respondojn al kelkaj demandoj en nia vikio aŭ sur la nia Jutuba kanalo

Aŭtoro de la artikolo: Vladimir Borisenkov, teknika fakulo ĉe Quarta Technologies.

fonto: www.habr.com