因为误删除了C盘下一个与Visual Studio有关的文件夹,导致了"Visual studio installer"失效,既无法卸载,也没法新添所需的.NET组件。原想着像以前VS 2015出了问题,就去装更高版本的VS 2019来解决问题,然而这回在装了VS 2022后问题并没有被解决。
于是现有:VS2015、VS2019、VS2022,全都用不了,卸不掉。
装新组件时总是遇到未能安装包“Microsoft.VisualStudio.MinShell.Interop.Msi”
”Microsoft.VisualStudio.MinShell.Msi.Resources“之类的问题。
查看”C:\Users\Qliver\appData\Local\Temp\“下的log:

log
内容如下:
“未能安装包“Microsoft.VisualStudio.MinShell.Interop.Msi,version=16.0.28329.73”。
Could not open key:
UNKNOWN\Components\F0821A7258CB16D4F8C88902F97FA48C\D3AD87A34D8CD9245B63E6950A804815.
Verify that you have sufficient access to that key, or contact your support personnel.”
似乎只要去注册表中提升相应KEY的权限就行了?(https://blog.csdn.net/qq_22831229/article/details/116060482)
MayBe.......,但本人在改了几十个KEY后,仍然未能解决装不了*.Msi包的问题。
所以还是换一个思路吧,重装系统是不可能重装的,那就把跟VS相关的所有组件全都从系统中清除,然后再重装VS 2019,这里要推荐一个工具:
不是VisualStudioUninstaller,而是”Geek Uninstaller"(https://geekuninstaller.com/).
好的,利用Geek Uninstaller先把Visual Studio相关项全部移除,当然决不能漏删MSI包:

删除VS*.MSI
OK,至此,顺利的话,你无需继续看下去了,前提是你的“Hello world"没有报:

应用程序无法正常启动
本人的HelloWorld程序是调用OPENCV库中imshow(),显示了一张图像。

SHOW Time: lena.jpg
接下来介绍所遇到的问题和解决思路。
1)由于找不到ucrtbased.dll,无法继续执行代码
前往https://www.dll-files.com/ucrtbased.dll.html下载相关DLL并放到相应目录下。
在 64位 Windows 系统中:
放置32位 DLL 文件的默认路径为:C:\Windows\SysWOW64
放置64位 DLL 文件的默认路径为:C:\Windows\System32\
至于為什麼system32中放的是64位dll,syswow64中放的是32位dll,=》https://blog.csdn.net/appleyuchi/article/details/96098807
2)LINK : fatal error LNK1104: 无法打开文件“ucrtd.lib”
本人在C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64 下找到了
“ucrtd.lib”,将其所在路径填入VC++库目录

VC++库目录
2)VS2019 无法打开文件“kernel32.lib”
本人在C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64 下找到“kernel32.lib”,将其所在路径填入VC++库目录
3)fatal error LNK1104: 无法打开文件“msvcprtd.lib"
本人在E:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\lib\x64 下找到“msvcprtd.lib",将其填入链接器/常规/附加库目录,并将库名 msvcprtd.lib 填入链接器/输入/附加依赖项

库 文件路径填入附加库目录

库名填入附加依赖项
接下报了个很唬人的LINK ERROR:42个无法解析的外部符号。这个OPENCV库编译的DLL和LIB文件不可能有错,以前是可以用的,……然后开始胡思乱想,之到注意到错误列表倒数第二行:

跟“ucrtd.lib”相关的冲突,而它又是我新添的,所以:

VC++库目录中放错库文件路径导致的无法解析外部符号
果然是由于本人把X86下的“ucrtd.lib”的路径填入了VC++库目录导致的LINK ERROR.
改正后:

改正后
好的,感谢你阅读至此,再会啊!