将文件复制到 Visual Studio 的安装文件夹时访问被拒绝

Access denied when copying files to Visual Studio's installation folder

我正在为 Visual Studio 2013 写一个 VSPackage。这个包应该下载一些 XML 架构文件,然后将它们复制到 Visual Studio 的 %installation folder%\Xml\Schemas.

我使用WebClient下载文件。当我将目标文件夹设置为像 C:\Test 这样的文件夹时,它工作得很好。这是执行此操作的代码:

webclient.DownloadFileAsync(url, "% Destination Folder Here %");

问题:

当我将目标文件夹设置为 "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Xml\Schemas" 时,出现以下错误:

Access to the path 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\Xml\Schemas' is denied.

我试过了:

1 - 在 Windows 中手动更改文件夹权限。

2 - (我更喜欢这样做) 用 C# 更改代码中的访问权限:

ApplicationVariables.SCHEMA_PATH = @"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Xml\Schemas";

//  Set access to the schema directory.
DirectoryInfo schemaDirectoryInfo = new DirectoryInfo(ApplicationVariables.SCHEMA_PATH);
DirectorySecurity schemadirectorySecurity = schemaDirectoryInfo.GetAccessControl();
schemadirectorySecurity.AddAccessRule(
     new FileSystemAccessRule(
            new SecurityIdentifier(WellKnownSidType.WorldSid, null),
            FileSystemRights.FullControl,
            AccessControlType.Allow)
            );

// I also have tried this
        FileIOPermission filePermission = new FileIOPermission(FileIOPermissionAccess.AllAccess, ApplicationVariables.SCHEMA_PATH);
        try
        {
            filePermission.Demand();
        }
        catch (Exception ex)
        {
            Debug.WriteLine("Security Error = " + ex.Message);
        }

问题

我的应用程序如何将一些文件复制到 Visual Studio 安装文件夹中?

这需要管理员权限,默认情况下 VS 2008 或更高版本不会 运行 提升(具有管理员权限),用户应使用 "Run as administrator" 上下文菜单条目启动 VS。包不应强制用户执行此操作,这意味着包无法将文件复制到 C:\Program Files (x86)(或写入注册表配置单元 HKEY_LOCAL_MACHINE)。

您的软件包的设置可以做到这一点(如果这样设计,默认情况下设置可以 运行 具有管理员权限),但您的软件包不能。