Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Windows işlem yalıtımında bir komut çalıştırmak için .NET, TypeScript veya Rust SDK'sını kullanın. Her örnek bir örnek giriş oluşturur, iş yükünün bu örnek girişi okumasına izin verir ve ayrı bir çıkış klasörüne yazma erişimi verir. Ağ ve kullanıcı arabirimi izinleri reddedilmiş durumda kalır.
Ana uygulamanız politikayı oluşturur ve sonucu işler. Komut MXC içinde çalışır; konak uygulamasının geri kalanı bunu yapmaz.
Örneklerde MXC 1.0 V1 SDK API'leri kullanılır. V1 SDK'ları kararlı 1.0.0 şemayı dahili olarak kullanır, bu nedenle isteğinizde bir şema sürümü belirtmezsiniz. Bkz. Uyumlu bir şema seçin.
Prerequisites
Şunlara sahip olmanız gerekir:
- desteklenen bir ProcessContainer ortamıyla Windows 11, sürüm 24H2 veya üzeri.
- C# için .NET 8 SDK’sı veya üzeri ve
Microsoft.Mxc.SdkNuGet paketi gerekir. - TypeScript, npm,
@microsoft/mxc-sdkpaketi ve Node.js 24 sürüm satırında Node.js 24.21.0 veya üzeri ya da Node.js 26.8.0 veya üzeri için. - Rust için, MSVC derleme araçları ve
mxc-sdkcrate ile kararlı bir Rust araç zinciri. Bkz.: Windows’ta Rust geliştirme ortamınızı ayarlama. - Kurulum komutları için yazılabilir bir çalışma dizini ve PowerShell.
Yönergelerde NuGet.org, npm ve crates.io MXC 1.0 paketleri kullanılır. MXC kaynak derlemesi gerekmez.
Örneği çalıştırmadan önce platform desteğini denetleyin. Desteklenen bir Windows sürümü, isteğe bağlı her özelliğin kullanılabilir olduğunu garanti etmez.
Bazı konaklarda MXC, AppContainer tabanlı bir geri dönüş katmanında işlem yalıtımı çalıştırır. Bu katman için sistem sürücüsünün ve null cihazın tek seferlik hazırlanması gerekir ve null cihaz ayarı her yeniden başlatmada sıfırlanır. Hazırlık eksik olduğunda, MXC'nin host probe'u, wxc-host-prep.exe alt komutunu çalıştırmanızı söyleyen bir uyarı döndürür. TypeScript örneği bu uyarıları getPlatformSupport() kaynağından yazdırır ve wxc-exec.exe --probe komutunu çalıştırarak bir ana bilgisayarı da kontrol edebilirsiniz.
wxc-host-prep.exe yönetici onayı gerektirdiğinden, bir yöneticinin önerilen komutu uygulamanızdan çalıştırmak yerine çalıştırmasını sağlayın. Ayrıntılar için bkz. Ana bilgisayar hazırlığı.
1. Proje oluşturma
Bir konsol uygulaması oluşturun ve NuGet.org MXC paketini ekleyin:
dotnet new console -n MxcQuickstart
Set-Location MxcQuickstart
dotnet add package Microsoft.Mxc.Sdk
2. İş yükünü tanımlama ve çalıştırma
İşlem yalıtımı, seçili konak dosyalarına ihtiyaç duyduğu ve kalıcı bir ortam gerektirmediği için bu kısa süreli komuta uyar. Diğer iş yükleri farklı bir kapsayıcı türü gerektirebilir.
Ana bilgisayar, proje dizininin altında workspace\output ve workspace\input oluşturur. Bu komut input.txt öğesini okur ve result.txt öğesine yazar. Kendi giriş dizinine yazma erişimi veya diğer proje dosyalarına erişim almaz.
Ana bilgisayar, kendi değişkenlerini devralmak yerine küçük, açık bir ortam sağlar. Windows ProcessContainer iş yükü için bir ortam sağladığınızda hem LOCALAPPDATA hem de SystemRoot ekleyin. MXC, ikisinden herhangi biri eksikse başlatmadan önce isteği reddeder. Örnek, geçici ve kullanıcı başına dosyaların ilke içinde kalması için LOCALAPPDATA, TMP ve TEMP noktalarını verilen çıkış dizinine işaret eder.
şununla değiştirin 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;
}
Uygulamayı çalıştırın:
dotnet run
Her sürüm yazdırır:
Sandbox exited with code 0
Hello from MXC!
Ayrıca workspace\output\result.txt öğesini de inceleyebilirsiniz.
3. Reddedilen bir işlemi doğrulayın
Komutun salt okunur giriş dizinine yazmayı denemesi için yalnızca çıkış dosyası bildirimini değiştirin:
string outputFile = Path.Combine(inputDirectory, "blocked.txt");
İlkeyi değiştirmeden uygulamayı yeniden çalıştırın. Yeni workspace\input\blocked.txt dosyası oluşmadan, erişim reddedildi hatası ve sıfır olmayan bir çıkış kodu bekleyebilirsiniz. Özgün çıkış dosyası bildirimini geri yükleyin ve izin verilen işlemin hâlâ başarıyla gerçekleştiğini doğrulayın.
İzin verilen çalıştırma başarısız olursa, konak kurulumu veya yapılandırma hatalarını kaynak reddinden ayırt edin. İkincisini araştırmak için Öğrenme Modu'nu kullanın; ilkeyi otomatik olarak genişletmeyin.
4. Örneği uyarlayın
Örnek komutu ve girişleri güvenilir bir temsilci iş yüküyle değiştirin. Gerekli aracın ikili dosyalarını, kitaplıkları, geçici dosyaları ve çıkışları gözden geçirin. Ağ veya kullanıcı arabirimi erişimini yalnızca görev gerektirdiğinde ve seçilen arka uç istenen kısıtlamaları uygulayabiliyorsa ekleyin.
Her hedef konakta izin verilen ve reddedilen işlemleri test edin. İlkeyi geliştirmek için Öğrenme Modu'nu kullandığınızda, her gözlemi gözden geçirin ve öğrenme veya denetim ayarları olmadan bir zorlama çalıştırmasıyla tamamlayın.
İsteğe bağlı: kodlama aracını kullan
Aracınıza hedef platformları, SDK dilini ve sürümünü, komutunu, gerekli kaynakları, yaşam döngüsünü ve yalıtım hedeflerini verin. Bu istemi uyarlayabilirsiniz:
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.
Ajanın varsayımlarını ve sonuçta ortaya çıkan politikasını gözden geçirin. Bir aracı, tümleştirmeye yardımcı olabilir, ancak güvenilen konak kodu veya bir kişi iş yükünün yetkilerinde yapılan değişiklikleri onaylamalıdır.
Sonraki Adımlar
- Kalıcı veya özelleştirilmiş arka uçları kullanmadan önce MXC mimarisini ve kapsülleme modellerini gözden geçirin.
- MXC ilkesi yazmayı ve doğrulamayı öğrenin.
- MXC kapsama seçeneklerini ve platform desteğini karşılaştırın.
- Öğrenme Modu iş akışının tamamını gözden geçirin.
- MXC ilke örneklerini diğer iş yüklerine uyarlayın.
- MXC sürümlerinde SDK paketlerini ve sürüm notlarını bulun.
Windows developer