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

本文关键字:文件夹 访问 拒绝 安装 复制 文件 Visual Studio | 更新日期: 2023-09-27 17:56:17

我正在为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" 时,出现以下错误:

对路径"C:''Program Files (x86)''Microsoft Visual Studio 12.0''Xml''Schemas'的访问被拒绝。

我试过:

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安装文件夹中?

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

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

的安装程序可以执行此操作(如果设计如此,默认情况下可以使用管理员权限运行安装程序),但包不能。