Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocí sady .NET, TypeScript nebo Rust SDK spusťte příkaz v izolaci procesů systému Windows. Každý příklad vytvoří ukázkový vstup, umožní úloze jej číst a udělí přístup k zápisu do samostatné výstupní složky. Oprávnění k síti a uživatelskému rozhraní zůstávají odepřena.
Hostitelská aplikace vytvoří politiku a zpracuje výsledek. Příkaz běží uvnitř MXC; zbytek hostitelské aplikace uvnitř MXC neběží.
Příklady používají rozhraní API sady SDK MXC 1.0 V1. Sady SDK V1 interně používají stabilní 1.0.0 schéma, takže v požadavku nezadávejte verzi schématu. Viz Zvolte kompatibilní schéma.
Prerequisites
Potřebujete:
- Windows 11, verze 24H2 nebo novější, s podporovaným prostředím ProcessContainer.
- Pro C# je potřeba sada .NET 8 SDK nebo novější a balíček NuGet
Microsoft.Mxc.Sdk. - Pro TypeScript, npm, balíček
@microsoft/mxc-sdka Node.js 24.21.0 nebo novější v řadě verzí Node.js 24 nebo Node.js 26.8.0 nebo novější. - Pro Rust, stabilní rust toolchain s MSVC build tools a
mxc-sdkcrate. Viz Nastavte si vývojové prostředí Rustu ve Windows. - Zapisovatelný pracovní adresář a PowerShell pro příkazy pro instalaci.
V pokynech se používají balíčky MXC 1.0 z NuGet.org, npm a crates.io. Není vyžadován žádný zdrojový build MXC.
Před spuštěním příkladu zkontrolujte podporu platformy . Podporovaná verze Windows nezaručuje dostupnost všech volitelných funkcí.
Na některých hostitelích MXC spouští izolaci procesů v alternativní vrstvě založené na AppContaineru. Tato vrstva potřebuje jednorázovou přípravu systémového disku a zařízení s hodnotou null a nastavení zařízení s hodnotou null se resetuje při každém restartování. Pokud chybí příprava, vrátí sonda hostitele MXC upozornění, které uvádí podpříkaz wxc-host-prep.exe, který se má spustit. Příklad TypeScriptu vytiskne tato upozornění z getPlatformSupport()a můžete také zkontrolovat hostitele spuštěním wxc-exec.exe --probe. Vzhledem k tomu, že wxc-host-prep.exe vyžaduje schválení správce, požádejte správce, aby spustil doporučený příkaz, namísto jeho spuštění z vaší aplikace. Podrobnosti najdete v tématu Příprava hostitele.
1. Vytvoření projektu
Vytvořte konzolovou aplikaci a přidejte balíček MXC z NuGet.org:
dotnet new console -n MxcQuickstart
Set-Location MxcQuickstart
dotnet add package Microsoft.Mxc.Sdk
2. Definujte a spusťte úlohu
Izolace procesů odpovídá tomuto krátkodobému příkazu, protože potřebuje vybrané soubory hostitele a žádné zachované prostředí. Jiné úlohy můžou vyžadovat jiný typ izolace.
Hostitel vytvoří workspace\input a workspace\output v adresáři projektu. Obsažený příkaz čte input.txt a zapisuje result.txt. Nemá přístup pro zápis do svého vstupního adresáře ani přístup k jiným souborům projektu.
Hostitel poskytuje malé explicitní prostředí namísto zdědění svých vlastních proměnných. Když zadáte prostředí pro Windows úlohy ProcessContainer, zahrňte obojí SystemRoot i LOCALAPPDATA. Pokud některý z nich chybí, MXC žádost před spuštěním odmítne. Ukázkové body LOCALAPPDATA, TEMP a TMP směřují na udělený výstupní adresář, aby dočasné a uživatelské soubory zůstaly v souladu se zásadami.
Nahradit Program.cs :
using Microsoft.Mxc.Sdk.V1;
if (!OperatingSystem.IsWindows())
{
Console.Error.WriteLine("This example requires Windows.");
return 1;
}
try
{
var support = MxcPlatform.GetPlatformSupport();
if (!support.IsSupported ||
!support.AvailableMethods.Contains(ContainmentBackend.ProcessContainer))
{
Console.Error.WriteLine(support.Reason ?? "Windows ProcessContainer is unavailable.");
return 1;
}
string inputDirectory = Path.GetFullPath(@"workspace\input");
string outputDirectory = Path.GetFullPath(@"workspace\output");
string outputFile = Path.Combine(outputDirectory, "result.txt");
string commandInterpreter = Path.Combine(Environment.SystemDirectory, "cmd.exe");
Directory.CreateDirectory(inputDirectory);
Directory.CreateDirectory(outputDirectory);
File.WriteAllText(Path.Combine(inputDirectory, "input.txt"), "Hello from MXC!\n");
var request = new ContainerRequest(
$"\"{commandInterpreter}\" /d /c type input.txt > \"{outputFile}\"")
{
Containment = new Containment.Process(),
Filesystem = new FilesystemPolicy
{
ReadonlyPaths = { inputDirectory, commandInterpreter },
ReadwritePaths = { outputDirectory },
},
// Omitted network and UI permissions remain denied.
WorkingDirectory = inputDirectory,
Environment = new()
{
["SystemRoot"] = Environment.GetFolderPath(Environment.SpecialFolder.Windows),
["LOCALAPPDATA"] = outputDirectory,
["TEMP"] = outputDirectory,
["TMP"] = outputDirectory,
},
TimeoutMs = 30_000,
};
ExecutionResult result = await MxcContainer.RunAsync(request);
Console.Write(result.Stdout);
Console.Error.Write(result.Stderr);
foreach (string warning in result.Warnings)
{
Console.Error.WriteLine(warning);
}
if (result.TimedOut)
{
Console.Error.WriteLine("The workload exceeded its timeout.");
return 1;
}
Console.WriteLine($"Sandbox exited with code {result.ExitCode}");
if (result.ExitCode == 0)
{
Console.Write(File.ReadAllText(outputFile));
}
return result.ExitCode;
}
catch (MxcException ex)
{
Console.Error.WriteLine(ex);
if (ex.Remediation is not null)
{
Console.Error.WriteLine(ex.Remediation);
}
return 1;
}
Spuštění aplikace:
dotnet run
Každá verze tiskne:
Sandbox exited with code 0
Hello from MXC!
Můžete také zkontrolovat workspace\output\result.txt.
3. Ověřte odepřenou operaci
Změňte pouze deklaraci výstupního souboru, aby se příkaz pokusil zapisovat do vstupního adresáře jen pro čtení:
string outputFile = Path.Combine(inputDirectory, "blocked.txt");
Spusťte aplikaci znovu beze změny zásady. Počítejte s chybou „Přístup odepřen“ a nenulovým ukončovacím kódem, aniž by se vytvořil nový soubor workspace\input\blocked.txt. Obnovte původní deklaraci výstupního souboru a ověřte, že povolená operace stále proběhne úspěšně.
Pokud povolené spuštění selže, odlište chyby nastavení hostitele nebo konfigurace od odepření přístupu ke zdroji. Použijte výukový režim k prozkoumání toho druhého; zásady automaticky nerozšiřujte.
4. Přizpůsobit příklad
Nahraďte ukázkový příkaz a vstupy důvěryhodnou reprezentativní zátěží. Zkontrolujte požadované binární soubory, knihovny, dočasné soubory a výstupy. Přidejte přístup k síti nebo uživatelskému rozhraní pouze v případech, kdy to úloha vyžaduje a vybraný back-end může vynutit zamýšlená omezení.
Otestujte povolené a odepřené operace na každém cílovém hostiteli. Když k upřesnění zásad použijete režim učení, zkontrolujte každé pozorování a dokončete vynucené spuštění bez nastavení učení nebo auditu.
Volitelné: použít agenta pro kódování
Dejte agentovi cílové platformy, jazyk a verzi sady SDK, příkaz, požadované prostředky, životní cyklus a cíle izolace. Tento prompt můžete přizpůsobit:
Use the MXC Learn quickstart and the documentation for my installed SDK release.
Integrate this workload through the .NET, TypeScript, or Rust SDK used by this project.
First identify the command, target platforms, input and output paths, network
and UI requirements, and whether state must persist between commands.
Explain the containment choice and create the narrowest policy that fits.
Run both permitted and denied cases and report the effective permissions.
Do not execute the workload outside MXC to get around a failure. Ask for my
approval before expanding access, changing host settings, or using permissive
Learning Mode. Treat observed resource access as evidence, not automatic grants.
Zkontrolujte předpoklady agenta a výslednou zásadu. Agent může pomoct s integrací, ale důvěryhodný kód hostitele nebo osoba musí schválit změny oprávnění úlohy.
Další kroky
- Než začnete používat trvalé nebo specializované back-endy, projděte si architekturu MXC a modely kontejnerizace.
- Naučte se vytvářet a ověřovat zásady MXC.
- Porovnejte možnosti izolace MXC a podporu platformy.
- Zkontrolujte celý pracovní postup Výukového režimu.
- Přizpůsobte příklady zásad MXC jiným úlohám.
- Vyhledejte balíčky SDK a poznámky k vydání v verzích MXC.
Windows developer