📄 offlinedetecaction.cs
字号:
namespace Imps.Client.CommLayer.NetworkDetect
{
using Imps.Client.Resource;
using Imps.Client.Utils;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Security;
using System.Threading;
public class OfflineDetecAction : DetectAction
{
private const string RegistryKeyName = "GlobalUserOffline";
private const string RegistryPath = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings";
public OfflineDetecAction()
{
base.Description = "Internet Explorer(R)脱机设置";
base.NextStage = NetworkDetectStage.HostFile;
}
public override void BeginDetectAction()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(this.StartDetect), this);
}
public override void CancelDetectAction()
{
}
private void IsOfflineSetting(List<DetectResult> details)
{
bool flag = false;
try
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings");
if (key != null)
{
object obj2 = key.GetValue("GlobalUserOffline");
if ((obj2 != null) && (obj2.ToString().Trim() == "1"))
{
flag = true;
}
if (flag)
{
details.Add(new DetectResult(DetectStatus.Failed, StringTable.NetworkDetect.IeOffline));
base.CanResume = false;
base.FireDetecFinsihedEvent(this, new DetectEventArgs(false, details));
}
else
{
details.Add(new DetectResult(DetectStatus.Passed, StringTable.NetworkDetect.IeNotOffline));
base.FireDetecFinsihedEvent(this, new DetectEventArgs(true, details));
}
}
else
{
details.Add(new DetectResult(DetectStatus.Failed, StringTable.NetworkDetect.ErrorOccour));
base.CanResume = true;
base.FireDetecFinsihedEvent(this, new DetectEventArgs(false, details));
}
}
catch (SecurityException exception)
{
ClientLogger.WriteGeneral(exception.ToString());
details.Add(new DetectResult(DetectStatus.Failed, StringTable.NetworkDetect.AclPermissionDenied));
base.CanResume = true;
base.FireDetecFinsihedEvent(this, new DetectEventArgs(false, details));
}
catch (Exception exception2)
{
ClientLogger.WriteGeneral(exception2.ToString());
details.Add(new DetectResult(DetectStatus.Failed, StringTable.NetworkDetect.ErrorOccour));
base.CanResume = true;
base.FireDetecFinsihedEvent(this, new DetectEventArgs(false, details));
}
}
private void StartDetect(object state)
{
Thread.CurrentThread.Name = "Imps.Client.Pc.NetworkDetect.OfflineDetecAction";
List<DetectResult> details = new List<DetectResult>();
this.IsOfflineSetting(details);
base.FireDetecFinsihedEvent(this, new DetectEventArgs(true, details));
}
public override NetworkDetectStage CurrentStage
{
get
{
return NetworkDetectStage.IeOffline;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -