Windows 为什么安装MSVC可再发行文件需要管理员权限?

Windows 为什么安装MSVC可再发行文件需要管理员权限?,windows,visual-c++,c++-cli,software-distribution,vcredist,Windows,Visual C++,C++ Cli,Software Distribution,Vcredist,这是在Windows上部署应用程序时非常令人沮丧的一部分。我们有两种选择:在应用程序目录中重新分发所需的DLL,或者使用合并模块和管理员权限在系统范围内安装它(如果尚未安装)。在我看来,微软可以简单地对其DLL进行数字签名,并允许将这些DLL安装到WinSxS中而无需升级。对于.NET也可以这样做 静态运行时,不使用CRT,这不是我的选择,因为我的代码是C++/CLI,它与M/MT交换机是互斥的(也可能和其他C++ STDLBS一样,但STLPort还没有确认)。他们不能给自己的组件提供比其他人

这是在Windows上部署应用程序时非常令人沮丧的一部分。我们有两种选择:在应用程序目录中重新分发所需的DLL,或者使用合并模块和管理员权限在系统范围内安装它(如果尚未安装)。在我看来,微软可以简单地对其DLL进行数字签名,并允许将这些DLL安装到WinSxS中而无需升级。对于.NET也可以这样做


静态运行时,不使用CRT,这不是我的选择,因为我的代码是C++/CLI,它与M/MT交换机是互斥的(也可能和其他C++ STDLBS一样,但STLPort还没有确认)。他们不能给自己的组件提供比其他人更好的处理。在他们的操作系统上透明地支持他们的C++运行时似乎不太像反托拉斯违反。如果您所说的只是更进一步,WinSxS系统本身就有违反这些顾虑的危险。但我可以看出其他编译器制造商会感到恼火的地方:但我要说的是,微软应该为他们提供一种签署共享运行时DLL的方法,并允许同样的免升级安装。事实上,情况变得更糟了。如果你想谈论软件更新,Microsoft/Windows Update是一个巨大的反垄断行为。这其中的哪一部分让你感到沮丧?作为系统管理员,我不希望用户在没有适当权限的情况下能够安装任何系统范围的软件。我不在乎它是谁的软件。使用静态运行时并不总是一种选择。例如,我的应用程序通过跨模块边界的STL对象,这将在静态运行时崩溃并烧毁,因为对象将在不同的堆中释放,而不是在分配它们的堆中释放。