Avast防病毒软件引入了一个沙箱;它会自动在其中运行某些软件;我有一个客户端使用在此沙箱中运行的软件,一旦沙箱终止,所有在沙箱中访问并更新的数据文件都将丢失。这是个很大的问题,我必须在程序中完善一个解决方案,以验证该程序是否确实在沙箱中运行。
'rem CHECK IF PROGRAMS (AVAST ECT) RUNNING IN SANDBOX
Dim objCS As Management.ManagementObjectSearcher
Dim manufacturerName As String
objCS = New Management.ManagementObjectSearcher("SELECT * FROM Win32_operatingSystem")
Try
For Each objMgmt In objCS.Get
'rem dummy request to trigger error ! ! !
manufacturerName = objMgmt("manufacturer").ToString()
Next
Catch ex As Exception
MsgBox("It seems like your programs is running in a SANDBOX(vm) - AntiVirus is busy checking it or has already placed it in quarantine !!! Please notify your Programmer if virus check fails. . ." & Chr(13) & Chr(13) & ex.Message, MsgBoxStyle.Critical)
End
End Try
您会注意到我使用了try catch异常;仅当程序在沙箱中运行时才会触发。
我需要知道的是,除了使用异常捕获外,是否还有更好的选择来了解AVAST是否确实在沙盒中运行了我的程序。我已经检查了其他解决方案,但它们不在vb.net中,或者它们无法有效工作。