7

我用 C# 编写了一个程序。如果用户勾选此框,它会将自身复制到启动。

应用程序使用注册表项“SOFTWARE\Microsoft\Windows\CurrentVersion\Run”将自己添加到启动中。

它工作正常,除了每次重新启动机器时都会提示用户是否确定要运行该程序,因为它被 Windows 阻止,因为它“来自另一台计算机”。

任何方式我都可以通过代码摆脱这个 Windows“阻止”标志,以便每次程序尝试自行运行时都不会提示用户?

谢谢

4

2 回答 2

1

当下载/复制到机器上时,Windows 附加了一个区域标识符 ( http://msdn.microsoft.com/en-us/library/dn392609.aspx ),基于文件来自的位置 ( http://msdn.aspx)。 microsoft.com/en-us/library/ms537183.aspx

为了取消阻止文件,您必须让用户打开文件属性并单击“取消阻止”按钮,或者自己将其删除。

您可以在此处找到有关如何发生这种情况以及一些方法(包括使用代码)的更多信息:http ://weblogs.asp.net/dixin/archive/2009/03/14/understanding-the-internet-file -blocking-and-unblocking.aspx

于 2014-03-14T01:34:02.477 回答
-1

尝试 powershell 脚本 http://technet.microsoft.com/en-us/library/hh849924.aspx

Unblock-File 取消阻止从 Internet 下载的文件。语法参数集:ByPath Unblock-File [-Path] [-Confirm] [-WhatIf] [ ]

参数集:ByLiteralPath Unblock-File -LiteralPath [-Confirm] [-WhatIf] [ ]

详细说明 Unblock-File cmdlet 允许您打开从 Internet 下载的文件。它会取消阻止从 Internet 下载的 Windows PowerShell 脚本文件,以便您可以运行它们,即使 Windows PowerShell 执行策略是 RemoteSigned 也是如此。默认情况下,这些文件被阻止以保护计算机免受不受信任的文件的侵害。在使用 Unblock-File cmdlet 之前,请查看文件及其源并验证它是否可以安全打开。在内部,Unblock-File cmdlet 删除 Zone.Identifier 备用数据流,其值为“3”,表示它是从 Internet 下载的。有关 Windows PowerShell 执行策略的详细信息,请参阅 about_Execution_Policies ( http://go.microsoft.com/fwlink/?LinkID=135170 ))。此 cmdlet 在 Windows PowerShell 3.0 中引入。

于 2014-03-14T01:37:11.147 回答