Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Gunakan SDK .NET, TypeScript, atau Rust untuk menjalankan perintah dalam isolasi proses Windows. Setiap contoh membuat input sampel, memungkinkan workload membacanya, dan memberikan akses tulis ke folder output terpisah. Izin jaringan dan UI tetap ditolak.
Aplikasi host Anda membuat kebijakan dan menangani hasilnya. Perintah berjalan di dalam MXC; bagian lain dari aplikasi host tidak.
Contohnya menggunakan API SDK MXC 1.0 V1. SDK V1 menggunakan skema stabil 1.0.0 secara internal, sehingga Anda tidak perlu menentukan versi skema dalam permintaan Anda. Lihat Pilih skema yang kompatibel.
Prerequisites
Kamu butuh:
- Windows 11, versi 24H2 atau yang lebih baru, dengan lingkungan ProcessContainer yang didukung.
- Untuk C#, SDK .NET 8 atau yang lebih baru dan paket NuGet
Microsoft.Mxc.Sdk. - Untuk TypeScript, npm, paket
@microsoft/mxc-sdk, dan Node.js 24.21.0 atau yang lebih baru di lini rilis Node.js 24, atau Node.js 26.8.0 atau yang lebih baru. - Untuk Rust, toolchain Rust yang stabil dengan alat build MSVC, dan
mxc-sdkcrate. Lihat Menyiapkan lingkungan pengembangan Rust Anda di Windows. - Direktori kerja yang dapat ditulis dan PowerShell untuk perintah penyiapan.
Instruksi menggunakan paket MXC 1.0 dari NuGet.org, npm, dan crates.io. Tidak diperlukan build sumber MXC.
Periksa dukungan platform sebelum Anda menjalankan contoh. Versi Windows yang didukung tidak menjamin bahwa setiap fitur opsional tersedia.
Pada beberapa host, MXC menjalankan isolasi proses di tingkat fallback berbasis AppContainer. Tingkat tersebut membutuhkan persiapan satu kali untuk drive sistem dan perangkat null, dan pengaturan perangkat null diatur ulang setiap kali sistem dimulai ulang. Jika persiapan belum dilakukan, pemeriksaan host MXC mengembalikan peringatan yang memberi nama wxc-host-prep.exe subperintah untuk dijalankan. Contoh TypeScript mencetak peringatan ini dari getPlatformSupport(), dan Anda juga dapat memeriksa host dengan menjalankan wxc-exec.exe --probe. Karena wxc-host-prep.exe memerlukan persetujuan administrator, minta administrator menjalankan perintah yang direkomendasikan daripada menjalankannya dari aplikasi Anda. Untuk detailnya, lihat Persiapan host.
1. Buat proyek
Buat aplikasi konsol dan tambahkan paket MXC dari NuGet.org:
dotnet new console -n MxcQuickstart
Set-Location MxcQuickstart
dotnet add package Microsoft.Mxc.Sdk
2. Tentukan dan jalankan beban kerja
Isolasi proses cocok dengan perintah berumur pendek ini karena membutuhkan file host yang dipilih dan tanpa lingkungan yang dipertahankan. Beban kerja lain dapat memerlukan jenis containment yang berbeda.
Host membuat workspace\input dan workspace\output di bawah direktori proyek. Perintah yang terkandung membaca input.txt dan menulis result.txt. Ini tidak menerima akses tulis ke direktori input atau akses ke file proyek lain.
Host menyediakan lingkungan yang kecil dan eksplisit alih-alih mewarisi variabel miliknya sendiri. Saat Anda menyediakan lingkungan untuk beban kerja ProcessContainer Windows, sertakan keduanya, SystemRoot dan LOCALAPPDATA. MXC menolak permintaan sebelum diluncurkan jika salah satu dari keduanya tidak ada. Contoh mengarahkan LOCALAPPDATA, TEMP, dan TMP ke direktori output yang diizinkan sehingga file sementara dan per pengguna tetap sesuai dengan kebijakan.
Ganti Program.cs dengan:
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;
}
Jalankan aplikasi:
dotnet run
Setiap versi mencetak:
Sandbox exited with code 0
Hello from MXC!
Anda juga dapat memeriksa workspace\output\result.txt.
3. Verifikasi operasi yang ditolak
Ubah hanya deklarasi file output sehingga perintah mencoba menulis ke direktori input baca-saja:
string outputFile = Path.Combine(inputDirectory, "blocked.txt");
Jalankan aplikasi lagi tanpa mengubah kebijakan. Harapkan kesalahan akses ditolak dan kode keluar bukan nol, tanpa file workspace\input\blocked.txt baru. Pulihkan deklarasi file output asli dan konfirmasikan bahwa operasi yang diizinkan masih berhasil.
Jika proses yang diizinkan gagal, bedakan pengaturan host atau kesalahan konfigurasi dari penolakan sumber daya. Gunakan Mode Pembelajaran untuk menyelidiki yang terakhir; jangan memperluas kebijakan secara otomatis.
4. Sesuaikan contoh
Ganti perintah sampel dan input dengan beban kerja perwakilan tepercaya. Harus meninjau biner alat, pustaka, file sementara, dan output. Tambahkan akses jaringan atau UI hanya ketika tugas memerlukannya dan backend yang dipilih dapat memberlakukan pembatasan yang dimaksudkan.
Uji operasi yang diizinkan dan ditolak pada setiap host target. Saat Anda menggunakan Mode Pembelajaran untuk menyempurnakan kebijakan, tinjau setiap pengamatan dan selesaikan dengan jalankan penegakan tanpa setelan mode pembelajaran maupun audit.
Opsional: gunakan coding agent
Beri agen Anda platform target, bahasa dan versi SDK, perintah, sumber daya yang diperlukan, siklus hidup, dan tujuan isolasi. Anda dapat menyesuaikan perintah ini:
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.
Tinjau asumsi agen dan kebijakan yang dihasilkan. Agen dapat membantu integrasi, tetapi kode host tepercaya atau seseorang harus menyetujui perubahan pada otorisasi beban kerja.
Langkah berikutnya
- Tinjau arsitektur MXC dan model containment sebelum menggunakan backend persisten atau khusus.
- Pelajari cara menulis dan memvalidasi kebijakan MXC.
- Bandingkan opsi containment MXC dan dukungan platform.
- Tinjau alur kerja Mode Pembelajaran lengkap.
- Sesuaikan contoh kebijakan MXC dengan beban kerja lain.
- Temukan paket SDK dan catatan rilis dalam rilis MXC.
Windows developer