我有一个C#winforms应用程序,它登录到在线控制台,使用reCAPTCHA确保您不是机器人。
在我的C#应用程序中,每次登录时都必须解决它。但是,当您通过Firefox登录时,只需要检查“我不是机器人”复选框,而无需解决reCAPTCHA:
我已经在注册表中设置了IE版本,所以除此之外,我不知道什么可以控制这种行为。有人能指出我正确的方向吗?
设置IE版本的代码:
private static void SetIE()
{
int BrowserVer, RegVal;
// get the installed IE version
using (WebBrowser Wb = new WebBrowser())
BrowserVer = Wb.Version.Major;
// set the appropriate IE version
if (BrowserVer >= 11)
RegVal = 11001;
else if (BrowserVer == 10)
RegVal = 10001;
else if (BrowserVer == 9)
RegVal = 9999;
else if (BrowserVer == 8)
RegVal = 8888;
else
RegVal = 7000;
// set the actual key
using (RegistryKey Key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", RegistryKeyPermissionCheck.ReadWriteSubTree))
if (Key.GetValue(System.Diagnostics.Process.GetCurrentProcess().ProcessName + ".exe") == null)
Key.SetValue(System.Diagnostics.Process.GetCurrentProcess().ProcessName + ".exe", RegVal, RegistryValueKind.DWord);
}
EDIT1 使用IE版本11.786.15063.0,您还需要解决reCAPTCHA以及Edge。
答案 0 :(得分:0)
如果您将其作为调试运行,那么应用程序名称可能不是您所期望的,并且与您创建的注册表项不匹配。
尝试为YourAppName.vshost.exe
添加密钥并重试。
这样的事情可能会有所帮助:
// Assign the application name to a variable
var appName = System.Diagnostics.Process.GetCurrentProcess().ProcessName + ".exe";
// If under debug replace it with the debug name
#if DEBUG
appName = System.Diagnostics.Process.GetCurrentProcess().ProcessName + ".vshost.exe";
#endif
// Your registry code
...
if (Key.GetValue(appName) == null)
Key.SetValue(appName, RegVal, RegistryValueKind.DWord);
或者运行Release版本,看看发生了什么。
编辑:
OP评论说,如果他使用Internet Explorer v11.786.15063.0浏览该网站,则会出现同样的问题,您必须解决reCAPTCHA而不是简单地选中该框。
在这种情况下,答案是接受行为或不使用WebBrowser
控件,而是使用CefSharp
之类的内容。