You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10 2018年5月更新后网络路径程序创建Socket报10022错误求助

解决Windows 10 2018年5月更新后网络路径程序创建Socket报错10022的问题

你碰到的这个问题是Windows 10 1803版本(2018年5月更新)的安全策略调整导致的——系统默认收紧了从网络共享路径运行程序的权限,限制了这类程序执行Socket创建这类网络相关操作,目的是降低恶意程序通过网络共享传播后发起攻击的风险。而本地磁盘运行不受限,是因为系统默认认为本地路径的程序可信度更高。

针对这个问题,给你几个可行的解决思路:

1. 将网络共享路径映射为本地驱动器

把你的网络共享路径(比如\\server\share)映射成一个本地盘符(比如Z:),之后从这个映射盘符启动程序。系统会把映射驱动器上的程序当作本地路径程序处理,就能绕过网络路径的权限限制,Socket创建操作也能正常执行了。

2. 调整Internet Explorer安全区域设置

网络共享路径默认被归类到“本地Intranet”安全区域,1803更新后该区域的权限被收紧。你可以这样调整:

  • 打开Internet Explorer(即便你日常不用IE,系统的安全区域设置依然依赖它)
  • 点击右上角齿轮图标→选择“Internet选项”
  • 切换到“安全”标签页,选中“本地Intranet”,点击“自定义级别”
  • 在弹出的设置窗口中,找到“运行未标记为安全的ActiveX控件和插件”或“对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本”,设置为“启用”或者“提示”(选提示的话,运行程序时会弹出确认框,点击允许即可)
  • 点击确定保存设置,重启程序尝试

3. 修改组策略(适用于专业版/企业版系统)

如果你的Windows是专业版或企业版,可以通过组策略解除网络路径程序的Socket限制:

  • 按下Win+R,输入gpedit.msc打开组策略编辑器
  • 依次展开:计算机配置→Windows设置→安全设置→本地策略→安全选项
  • 找到“网络访问:本地账户的共享和安全模型”,将其设置为“经典 - 本地用户以自己的身份验证”
  • 另外,还可以在计算机配置→管理模板→Windows组件→Internet Explorer→Internet控制面板→安全页面里,调整本地Intranet区域的安全级别,降低对网络程序的限制
  • 完成设置后,重启电脑生效

4. 为程序添加数字签名

如果是你自己开发的程序,给它添加有效的数字签名(测试阶段可以用自签名证书,正式环境建议使用CA颁发的证书)。系统会信任已签名的程序,允许它在网络路径上执行Socket这类操作。

附你提供的测试代码:

基础Socket创建代码:

Socket s; 
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

按钮点击测试代码:

private void button1_Click(object sender, EventArgs e) { 
    Socket s; 
    try { 
        s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
    } catch (Exception error) { 
        MessageBox.Show("Error : " + error.Message); 
        return; 
    } 
    MessageBox.Show("Oke"); 
}

内容的提问来源于stack exchange,提问作者Peter v.d. Vos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:01:16