.NET 2.0
File.Copy() (build using VS2005) function does not throw any exception if you want to copy a file in Windows 7 protected folder like "
C:\", "
C:\Program Files", etc. and it does not perform the copy operation too. Actually it performs the desired copy operation in virtual file store, i.e.,
%localappdata%\VirtualStore. This works as expected if you run your application as administrator. Below is a tip to check if the folder is protected or not, i.e., you can use
File.Copy() method as a target folder in
File.Copy() .
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.AccessControl;
using System.Security.Principal;
namespace FolderAccess
{
class Program
{
private static bool IsProtected(string folder)
{
DirectorySecurity ds = new DirectorySecurity(folder, AccessControlSections.Access);
if (ds.AreAccessRulesProtected)
{
WindowsIdentity wi = WindowsIdentity.GetCurrent();
WindowsPrincipal wp = new WindowsPrincipal(wi);
return !wp.IsInRole(WindowsBuiltInRole.Administrator); }
return false;
}
static void Main(string[] args)
{
if (IsProtected("C:\\"))
{
Console.WriteLine("Protected folder");
}
else
{
Console.WriteLine("Not a protected folder");
}
Console.ReadKey();
}
}
}
Working with
Pitney Bowes, Noida (India). Using C/C++, VC++, MFC, STL, C#, Java etc. on various platform like Windows, Unix, Macintosh etc. from last 12 years to convert various type of requirements into running software components. My core expertise is multithreaded desktop product development on Windows.