问题标签 [shadow-copy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2056 浏览

c# - AppDomain Shadow Copy 包括引用的程序集

我第一次尝试影子复制。我有以下代码:

可执行文件可以很好地到达临时目录并且它正在运行,直到我到达引用的 dll。我在整个项目中引用的 14-16 dll 没有被复制到这个临时目录,导致应用程序崩溃。

我错过了什么?如何让它们全部复制到临时目录?

0 投票
2 回答
1931 浏览

c# - AppDomain ExecuteAssembly 无法加载文件或程序集

我有一个应用程序(app1)加载另一个应用程序(app2),如下所示:

执行该行时出现此错误:

无法加载文件或程序集 Foo...

App2 引用了 Foo。如果我在 app1 中添加对 Foo 的引用,它就可以工作。问题是我不希望 app1 引用 Foo。App1 的主要目的是在网络共享上检测 app2 的新版本,卸载 app2,复制新的二进制文件,然后使用上面的行再次启动 app2。之后,如果 app1 中有旧的 Foo ,那么 app2 将在它自己的运行目录中使用它而不是 Foo 。

我怎样才能使它只有 app2 引用 Foo,但 app1 仍然会加载 app2 而不会出现该错误?

注意:我正在使用卷影复制,并且当 app1 引用 Foo 时它正在工作。

0 投票
1 回答
3009 浏览

windows - Windows VSS:两个卷影副本之间的区别?

我正在使用 VSS api 创建卷的一些卷影副本,然后使用它们的 UNC 路径访问它们。
是否有可能获得在两个连续阴影之间发生变化的某种事物的列表?

这样做的明显方法是检查卷中的所有文件并检查更改,但必须有一种更简单的方法来做到这一点,因为 VSS 的关键特性之一是它保存信息的增量并且只保存什么被改变。

0 投票
1 回答
639 浏览

c# - C#:AppDomain ShadowCopyDirectories 为空

我是 appdomain 概念的新手。它在这里指出,卷影副本会创建您正在引用的程序集的副本,但是当我检查我的 ShadowCopyDirectories 时,它是空的。

这是我的代码:

我错过了什么吗?谢谢

0 投票
2 回答
11357 浏览

.net - 为默认 AppDomain 设置卷影复制的正确方法是什么

有关我可以使默认 AppDomain 使用某些程序集的卷影副本吗?,它描述了在特定目录的默认 AppDomain 中激活卷影复制的有效解决方案。

基本上它说使用这些简单的方法:

但是因为这里使用的方法被标记为过时,所以我想知道现在完成相同操作的正确方法是什么。警告消息提示:

请调查 AppDomainSetup.ShadowCopyDirectories 的使用情况

AppDomain 有一个称为此类型的成员,SetupInformation它可能会将您带到这个简单的实现

不幸的是,这没有效果。所以问题是,有没有办法改变当前 appdomain 的 AppDomainSetup 来激活卷影复制?

0 投票
3 回答
4634 浏览

c# - MEF 和 ShadowCopying DLL,以便我可以在运行时覆盖它们

我试图在我的 MEF 插件目录中停止我的应用程序锁定 DLL,以便我可以在运行时覆盖程序集(注意我实际上并没有试图让 MEF 即时重新加载它们,在下一个应用程序启动时很好,我只是不想停止应用程序进行复制)

我试图通过为我的 mef 加载的程序集创建一个影子复制的应用程序域来做到这一点,如下所示:

然后通过此类上的 CompositionContainer 访问我的 MEF 组件目录。然而,组合容器似乎只在影子复制域内初始化(这是有道理的),这意味着它在我的应用程序域中为空。我只是想知道是否有更好的方法来执行此操作或某种跨域查询的方法来获取我的 MEF 组件

0 投票
2 回答
594 浏览

c - RegLoadKey 从卷影副本中到配置单元文件

我正在创建一个卷影副本,我想从该卷影副本安装一个注册表配置单元,RegLoadKey()因此我使用普通的注册表函数检查其内容。
这通常工作得很好,除了在某些根本不工作的机器上。

我创建了卷影副本并获得了它的挂载点——就像
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8
我然后调用 的那样

此调用返回1009 - The configuration registry database is corrupt.

如果我使用CreateFileW(),我可以使用该路径成功打开此文件,因此它肯定存在。

我已经确保卷影副本是使用注册表编写器创建的,所以我认为这不是问题。
如果我创建卷影副本并在重新启动后尝试这个没有区别。
这只发生在某些机器上。大多数情况下它工作得很好。我不确定它不能运行的机器有什么区别。
本机为windows 2008 64位。

0 投票
2 回答
4894 浏览

c# - c# shadowcopy 示例

我还需要使用链接的 dll 更新我的可执行文件。

我已经阅读了有关AppDomainSetup.ShadowCopyFiles但我在尝试正确的步骤来做我需要的事情时遇到了麻烦

问题是:

  • 只有在通知更新或每次启动可执行文件时才需要创建卷影副本?
  • 复制和更新 dll 和 .exe 的正确步骤是什么?
0 投票
1 回答
725 浏览

deployment - 在 app_offline.htm 复制并激活后部署网站时 bin/*.dll 被锁定(卷影复制关闭)

我在部署网站时遇到问题。卷影副本在之前的部署问题和部署站点后被关闭。

特别是在部署时,我发现即使在复制app_offline.htm并验证站点/应用程序处于脱机状态之后,其中的文件bin/*.dll也经常被锁定。

关闭卷影副本后,我仍然希望在外观appdomain卸载时释放 dll 上的锁。app_offline.htm

我已经尝试部署一个临时web.config发现Stack Overflow,旨在防止bin/在我尝试删除内容之前立即拾取更改(对),bin/ 我什至10s在复制新的web.config.

我已经用handles util确认我的应用程序池(w3wp.exe进程)是dll锁的持有者,所以我假设这是我无法删除/覆盖文件的原因。如果我手动回收应用程序池,它会释放它并且我能够很好地部署。不幸的是,作为部署过程的一部分,复制 app_offline 和更改 web.config 是可能的,但执行IISappcmd 回收不是(出于权限/组策略原因),所以我真的需要能够通过app_offline.htmweb 来释放这个锁。配置。

重新打开卷影副本确实“解决”了这个特定问题,但如果仍然在 dll 上持有锁。但是,我想知道/并担心我是否只是推迟了问题。除非旧 dll 上的锁在appdomain再次加载时被释放?

复制进程ID时不会像硬回收那样改变,但我认为它正在卸载应该释放它已锁定app_offline.htm的进程。w3wpappdomainbin/ files

另一个有趣的点是,这似乎只发生在我们的生产服务器上,我无法在本地或我们的开发/登台站点上重新创建它。我不相信app_poolsorIIS配置有任何配置差异,但这可能会导致这种行为。

另外要澄清shadowCopyBinAssemblies的是,已经设置为 false 超过 3 年没有发生这个问题(相同的部署过程)所以我真的觉得最近发生的事情导致了这个,但我不知道是什么。

感谢您提供有关如何解决此问题甚至可能导致此问题的任何想法。

(我相信服务器是IIS77.5

0 投票
2 回答
5398 浏览

powershell - 在 PowerShell 中使用“备份”上下文创建卷影副本

我正在编写用于使用 rsync 备份 Windows 计算机的 PowerShell 脚本。为此,我正在尝试使用所述脚本中的 WMI 来创建具有写入者参与的非持久卷影副本(显然建议用于备份)。

我从另一个问题(Accessing Volume Shadow Copy (VSS) Snapshots from powershell)中发现了一种创建卷影副本的方法,但是这里给出的示例使用“ClientAccessible”作为上下文参数,这会导致创建一个持久的Shadow Copy,没有作者参与。

在寻找解决方案时,我发现我可以使用以下命令来获取上下文列表,我假设 WMI 可以理解:

它确实列表有一个名为“备份”的上下文,这很方便我想要的。我继续尝试使用该上下文创建非持久性卷影副本:

但是,这似乎失败并且$shadow变量的内容设置为

根据相关文档(Win32_ShadowCopy 类的 Create 方法),返回值的意思是“不支持的卷影复制上下文”。

我找不到任何相关文档说明为什么不支持此上下文或是否可以使用它。我也尝试过“FileShareBackup”和“AppRollback”上下文但没有成功。

我假设我要么遗漏了一些明显的东西,要么由于某种原因,WMI 在创建卷影副本时确实不支持“clientAccessible”以外的任何东西,或者这是依赖于操作系统的(我正在 Windows 7、64-少量)

我怎样才能让它工作?