将文件复制到 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安装文件夹中?
为此需要管理员权限,并且 VS 2008 或更高版本默认情况下不会提升运行(具有管理员权限),用户应使用"以管理员身份运行"上下文菜单条目启动 VS。包不应强制用户执行此操作,这意味着包无法将文件复制到 C:''Program Files (x86)(或写入注册表配置单元HKEY_LOCAL_MACHINE)。
包的安装程序可以执行此操作(如果设计如此,默认情况下可以使用管理员权限运行安装程序),但包不能。