I am writing a VSPackage
for Visual Studio 2013
. This package's supposed to download some XML Schema files, then copy them to Visual Studio's %installation folder%\Xml\Schemas
.
I use WebClient
to download the files. It works perfectly when I set the destination folder to some folder like C:\Test
. Here is the code that does this:
webclient.DownloadFileAsync(url, "% Destination Folder Here %");
Problem:
When I set the destination foder to "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Xml\Schemas"
, I get the following error:
Access to the path 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\Xml\Schemas' is denied.
I have tried:
1 - Changing the folder permissions manually in Windows.
2 - (I prefer to do this one) Changing the access permission in the code with 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);
}
Question
How can my application copy some files into Visual Studio installation folder?