【发布时间】:2022-10-12 23:06:26
【问题描述】:
我有一个应用程序可以在不同的浏览器中测试网页的布局,而不需要用户将新的浏览器下载到他们的本地。每次该用户打开新浏览器来测试页面时,我希望该浏览器在沙箱中打开,以限制浏览器在遇到任何恶意软件或危险站点时的操作。
我怎样才能做到这一点?
笔记:这个应用程序是用 C# 编写的。
【问题讨论】:
我有一个应用程序可以在不同的浏览器中测试网页的布局,而不需要用户将新的浏览器下载到他们的本地。每次该用户打开新浏览器来测试页面时,我希望该浏览器在沙箱中打开,以限制浏览器在遇到任何恶意软件或危险站点时的操作。
我怎样才能做到这一点?
笔记:这个应用程序是用 C# 编写的。
【问题讨论】:
您将面临几个挑战,因此我将尝试一次解决它们。您可能还想确定这是否是可接受的工作流程,因为每个启动的沙箱默认只有默认浏览器。其他浏览器可能必须手动安装,甚至编写脚本,但会花费时间并减慢测试速度。
从网站启动沙盒将是一个挑战,您可以通过在 Windows 注册表中配置自定义 URL 协议来处理链接点击来实现这一目标。这将需要您编写注册表值、拦截回调并处理参数。 How to launch an application from a browser?
我将补充一点,如果权限有问题,您还可以在用户子项中注册该自定义 URL 协议。所以可能看起来更像以下内容:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSOFTWAREClassesApplicationsYourExe.exe]
"FriendlyAppName"="Your Application Name"
[HKEY_CURRENT_USERSOFTWAREClassesApplicationsYourExe.exeDefaultIcon]
@=""C:\Path\To\Your\executable.exe",0"
[HKEY_CURRENT_USERSOFTWAREClassesApplicationsYourExe.exeshell]
[HKEY_CURRENT_USERSOFTWAREClassesApplicationsYourExe.exeshellopen]
[HKEY_CURRENT_USERSOFTWAREClassesApplicationsYourExe.exeshellopencommand]
@=""C:\Path\To\Your\executable.exe" "%1""
您可以设计一种基于创建 .wsb 文件并使用启动脚本填充它的解决方法。您的回调处理程序 exe 将采用从自定义 URL 协议传递的参数,填充此 .wsb 并启动它。
https://www.windowscentral.com/how-configure-windows-sandbox-windows-10
基于此,您可能会有以下内容:
<Configuration>
<VGpu>Default</VGpu>
<Networking>Default</Networking>
<MappedFolders>
<MappedFolder>
<HostFolder>C:FolderThatContainsBrowserInstaller</HostFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>Powershell.exe -ExecutionPolicy Unrestricted C:usersWDAGUtilityAccountDesktopFolderThatContainsBrowserInstallerScriptThatInstallsBrowserAndLaunchesURL.ps1</Command>
</LogonCommand>
</Configuration>
可以在此处找到其他帮助:Starting the Windows Sandbox from managed code
您必须决定 ScriptThatInstallsBrowserAndLaunchesURL.ps1 的实际作用,但安装浏览器进行测试,然后使用 URL 启动它听起来是一项相当简单的任务。
【讨论】: