您当前的位置: 首页 > 

寒冰屋

暂无认证

  • 0浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ScoopBox

寒冰屋 发布时间:2021-01-25 21:44:59 ,浏览量:0

 

Windows Sandbox是一个很棒的工具,但有一些限制。在此博客文章中,我们将讨论如何使用脚本或ScoopBox解决这些限制。

什么是Windows Sandbox?

从技术上讲,Windows Sandbox是按需创建的轻量级虚拟机,用户可以安全地独立运行应用程序。该虚拟机使用与主机相同的OS映像。Windows沙盒环境中安装的软件保持“沙盒”状态,并且与基本计算机分开运行。当试图单独分析某些程序时,这是理想的选择。

如何启用Windows沙盒?
  1. 首先,机器应使用Windows 10 Pro或Enterprise,内部版本18305或更高版本。
  2. 应该从BIOS在计算机上启用虚拟化。
  3. 使用任务栏上的搜索栏,然后键入“打开和关闭Windows功能”以访问Windows可选功能工具。选择Windows沙盒,然后单击确定。
  4. 如果出现提示,请重新启动计算机。

在此处查看官方文档中详细的分步安装信息。

如何使用配置文件配置Windows沙盒?

Windows Sandbox支持简单的配置文件,使我们能够自定义最小的参数集。配置文件的格式为XML。

配置文件使用户可以控制Windows沙盒的以下方面:

  • vGPU(虚拟GPU):启用或禁用虚拟GPU。如果禁用了vGPU,则沙盒将使用Windows Advanced Rasterization Platform(WARP)。
  • 网络:在沙盒中启用或禁用网络访问
  • 映射的文件夹:从主机共享具有读取或写入权限的文件夹。请注意,暴露主机目录可能会允许恶意软件影响系统或窃取数据。
  • 登录命令: Windows沙盒启动时执行的命令
  • 音频输入:共享主机对麦克风的沙盒输入
  • 视频输入:共享主机的网络摄像头输入到沙盒
  • 受保护的客户端:将增强的安全性设置放在RDP会话中的沙盒中
  • 打印机重定向:将打印机从主机共享到沙盒中
  • 剪贴板重定向:与沙盒共享主机剪贴板,以便可以来回粘贴文本和文件
  • 内存(MB):分配给沙盒的内存量(以兆字节为单位)

您所要做的就是打开notepad.exe并指定您希望沙盒实例具有的选项。

完整的沙盒文件如下所示:


  Disable
  Disable
  

    
    

      
      C:\Users\Public\Downloads

       
      C:\Users\WDAGUtilityAccount\Desktop
      true
    
  
  
    explorer.exe C:\users\WDAGUtilityAccount\Downloads
  

保存扩展名为.wsb的文件,您将获得Windows Sandbox图标,您可以双击该图标以启动实例。

使用Windows沙盒的“大问题”

使用Windows沙盒存在一个主要问题。与其他任何虚拟机不同,Windows沙盒关闭时将删除所有用户数据。这包括在任何位置创建的每个文件以及计算机上安装的每个程序。这不是用户可以打开或关闭的东西。这就是它的设计方式。

用户每次登录环境时,都应安装所需的所有软件。

有针对这个的解方法吗?当然有。

解决方案

如果我们检查配置文件,我们会看到Windows Sandbox- Logon命令中有一个执行脚本的选项。

尽管此登录命令看起来像一个集合,感觉像一个集合,行为像一个集合,但文档并没有明确说明,它实际上不是一个集合,并且只能执行一个脚本。

这是一个在Windows沙盒中安装Fiddler和Curl的PowerShell脚本。

# Download and install Scoop Package manager
# Note: This will not work if you disable the network access from
# Windows Sandbox configuration file.
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

# Scoop package manager requires git to be able to install most software.
scoop install git

# Add extra buckets so we have more software to choose from.
scoop bucket add extras
scoop bucket add nerd-fonts
scoop bucket add nirsoft
scoop bucket add java
scoop bucket add jetbrains
scoop bucket add nonportable
scoop bucket add php

# Install Fiddler and Curl
scoop install fiddler, curl

创建PowerShell之后,我们必须在虚拟机内部传输它。如果您查看示例XML文件,则有一个MappedFolder部分可以用来在其中复制脚本。

例如,如果将脚本放入桌面的Scripts文件夹中,并希望从沙盒内部执行脚本,则配置应如下所示:


  Disabled
  Default
  
    
      C:\Users\YOUR_USERNAME\Desktop\Scripts
      C:\Users\WDAGUtilityAccount\Desktop\Sandbox\
      false
    
  
  
    powershell.exe -ExecutionPolicy Bypass 
    -File C:\Users\WDAGUtilityAccount\Desktop\Sandbox\MainScript.ps1
  
  Default
  Default
  Default
  Default
  Default
  0

注意:默认用户没有权限在沙盒中执行脚本。这就是为什么我们必须设置执行策略才能看到脚本运行的原因。

将其另存为.wsb文件并运行。一段时间后,您应该会看到已安装程序,然后就可以开始工作了。

什么是ScoopBox?

ScoopBox 是一个C#库,可自动执行配置文件的构建并生成一个脚本,该脚本中包含要使用PowerShell执行的命令。

ScoopBox使用首选方式进行安装。

如何安装
Install-Package ScoopBox -Version 1.0.0

dotnet add package ScoopBox --version 1.0.0

如何使用ScoopBox?

以下是一些ScoopBox工作原理的示例。

使用预安装的应用程序启动Windows沙盒
ISandbox sandbox = new Sandbox();
await sandbox.Run(new ScoopPackageManagerScript
      (new List() { "curl", "fiddler", "vscode" }));
使用用户脚本启动Windows沙盒
ISandbox sandbox = new Sandbox();
await sandbox.Run(new List()
{
    new ExternalScript(new FileInfo(@"C:\Users\Scripts\StartBrowser.ps1"), 
                       new PowershellTranslator()),
    new ExternalScript(new FileInfo(@"C:\Users\Scripts\StartExplorer.ps1"), 
                       new PowershellTranslator()),
});
使用组合脚本启动Windows沙盒
ISandbox sandbox = new Sandbox();
await sandbox.Run(new List()
{
    // PowerShell script as string to open notepad
    new LiteralScript(new List() 
    { @"Start-Process 'C:\windows\system32\notepad.exe'" }, new PowershellTranslator()),

    // Cmd script to open a browser
    new ExternalScript
    (new FileInfo(@"C:\Users\Scripts\StartBrowser.cmd"), new CmdTranslator()),

    // Bat script to open explorer
    new ExternalScript(new FileInfo
    (@"C:\Users\Scripts\OpenExplorer.bat"), new BatTranslator()),

    // Scoop package manager that installs curl and fiddler
    new ScoopPackageManagerScript(new List(){ "curl", "fiddler" }),
});

所有脚本均按其定义的顺序运行。

修改沙盒配置文件
IOptions options = new Options()
{
    AudioInput = AudioInputOptions.Enable,
    PrinterRedirection = PrinterRedirectionOptions.Enable,
    Networking = NetworkingOptions.Default,
    VGpu = VGpuOptions.Enabled,
    // ...
};

ISandbox sandbox = new Sandbox(options);
结论

Windows Sandbox是一个很棒的工具,但有一些限制。在此博客文章中,我们讨论了如何使用脚本或ScoopBox来解决这些限制。还可以看看github中的ScoopBox。

https://www.codeproject.com/Articles/5287300/ScoopBox

关注
打赏
1665926880
查看更多评论
立即登录/注册

微信扫码登录

0.0716s