最终完美解决方法:经过多次波折,终于找到无法正常安装.net3.5的原因了,是因为已删除的用户还有注册表残留导致的,而且这个问题还会影响一个win10更新的安装,导致每天更新失败,撤销更新。。。
详见《win10无法安装.net 3.5 错误(0x80070003)有谁碰到过?》如下为节选部分以防链接失效:
解决方案:
注册表残留问题
如果你的电脑创建过多个账户,并且旧账户已删除(计算机管理里删除并不能删除干净),可能是因为注册表残留导致。
按Win+R打开运行,输入Regedit回车打开注册表编辑器,导航至以下位置:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList
一定要保留S-1-5-18、S-1-5-19、S-1-5-20以及S-1-5-21-xxxx(后面的xxxx代表一串数字,每个人电脑中都不同。该项代表自己正在使用的账户)。
其中S-1-5-21-xxxx的某个项就是未删除干净的账户数据,可以删除,但别把当前账户数据给删除了。
另上述S-数字的组合即账户的sid,可用此方式查看所有有效账户的sid:cmd执行此句即可“wmic useraccount get name,sid”
原文:
换win10后装好vs2010打开之前的C#项目的sln文件,提示没有.net3.5问我是转换呀,还是去下载等等,选择下载,下一个项目又弹出来了。。。解决方案中一共十几个项目,只好再选最后一项全部unload,这体验真是无力吐槽了。
在.net下载页面一看,那个全包的dotnetfx35.exe我以前有一个,应该是xp或win7时用的,直接找到安装,实际好像没用那个exe的文件而是直接启动了win10的“功能”安装模块,装了许久,提示“另一个程序正在使用此文件,进程无法访问。(异常来自HRESULT:0x80070020)”——你倒是告诉我是哪个文件被占用了呀。。。
然后又在微软.net下载页面下了一个dotnetfx35setup.exe(在线安装版)来安装,以免是我那个exe不支持win10,谁知然并卵还是那个错误。
最后又在“程序和功能”中“启用功能”里选择.net3.5安装,这次终于不一样了,又换了一个什么严重错误。。。错误码好像也变成了0x800FFFFF(因为当时心中一万头草泥马飘过,没专门记错误码可能略有出入)。(此方式在安装失败后,应该是会回滚的,所以在失败情况下推荐用前两种方式)
期间又重启尝试了多次,仍然都是各种错误,甚至想过还是改回win7吧,最后虽然一直安装失败,但还是试着又打开了一次那个C#项目,vs先弹了一个.net2.0什么文件的错误提示,点掉之后,竟然可以正常打开.net3.5的项目了,我勒个去去!!!而且编译也正常,估计报错的那些都是在报.net2.0的安装问题,但其实3.5已经安装完成了,并且退出安装时也没有回滚,所以就是这个啼笑皆非的结果。。。2.0我们早已不再使用,所以虽然安装有点问题,但3.5可以正常编码就先这么用着吧。
总而言之,win10装.net3.5即使报错了也用vs打开试试吧,没准其实已经可以了,实在不行就把我上述前两个安装方法都试下吧,真是累不觉爱呀!
后记:windows的历史包袱太沉重了,但微软还在继续加重这个包袱,希望最后不要变成一个“灾难”;我觉得就应该化繁就简重做一个轻量级的系统来满足多平台的需求,而老系统通过长期安全性维护的方式来满足企业的需求,这样才有机会和安卓、ios一较高下,并且也是在可以守住现有阵地的基础上。