C# 拒绝访问用户文件夹
我需要在我的C# 拒绝访问用户文件夹,c#,C#,我需要在我的User文件夹中找到我的图片。但是我得到运行时错误访问被拒绝 这是我的密码 static void Main(string[] args) { string pic = "*.jpg"; string b = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); string appdata = Path.Combine(b, "AppData"); // I Dont want s
User
文件夹中找到我的图片。但是我得到运行时错误访问被拒绝
这是我的密码
static void Main(string[] args)
{
string pic = "*.jpg";
string b = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
string appdata = Path.Combine(b, "AppData"); // I Dont want search in this folder.
string data = Path.Combine(b, "Data aplikací"); // Here also not.
foreach (string d in Directory.GetDirectories(b))
{
try
{
if ((d == data) || (d == appdata))
{
continue;
}
else
{
foreach (string f in Directory.GetFiles(d, pic))
{
//...
}
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
}
}
}
以管理员身份运行应用程序也不起作用。如何避免这种情况?检查文件夹是否为只读(在windows中)如果是,只需清除只读标志即可 如果它不是只读的,请确保管理员用户对该文件夹拥有完全权限。您可以通过右键单击文件夹-->属性-->安全性来检查这一点 查看此链接以了解有关如何通过编程进行设置的更多信息:
哦,不要去更改你的目录/文件夹权限-那只是在要求将来的痛苦 这里没有“一行程序”解决方案-基本上,您需要递归地遍历文件夹结构,查找您关心的文件,并在过程中吸收/吃掉
未授权的访问异常(通过检查DirectoryInfo.GetAccessControl
,可以完全避免异常,但这是一个完全不同的问题)
下面是一个blob o’代码:
void Main()
{
var profilePath = Environment
.GetFolderPath(Environment.SpecialFolder.UserProfile);
var imagePattern = "*.jpg";
var dontLookHere = new[]
{
"AppData", "SomeOtherFolder"
};
var results = new List<string>();
var searchStack = new Stack<string>();
searchStack.Push(profilePath);
while(searchStack.Count > 0)
{
var path = searchStack.Pop();
var folderName = new DirectoryInfo(path).Name;
if(dontLookHere.Any(verboten => folderName == verboten))
{
continue;
}
Console.WriteLine("Scanning path {0}", path);
try
{
var images = Directory.EnumerateFiles(
path,
imagePattern,
SearchOption.TopDirectoryOnly);
foreach(var image in images)
{
Console.WriteLine("Found an image! {0}", image);
results.Add(image);
}
var subpaths = Directory.EnumerateDirectories(
path,
"*.*",
SearchOption.TopDirectoryOnly);
foreach (var subpath in subpaths)
{
searchStack.Push(subpath);
}
}
catch(UnauthorizedAccessException nope)
{
Console.WriteLine("Can't access path: {0}", path);
}
}
}
void Main()
{
var profilePath=Environment
.GetFolderPath(Environment.SpecialFolder.UserProfile);
var imagePattern=“*.jpg”;
var dontLookHere=new[]
{
“AppData”、“SomeOther文件夹”
};
var results=新列表();
var searchStack=新堆栈();
searchStack.Push(profilePath);
而(searchStack.Count>0)
{
var path=searchStack.Pop();
var folderName=newdirectoryinfo(path).Name;
if(dontLookHere.Any(verboten=>folderName==verboten))
{
继续;
}
WriteLine(“扫描路径{0}”,路径);
尝试
{
var images=Directory.exe文件(
路径
图像模式,
SearchOption.TopDirectoryOnly);
foreach(图像中的var图像)
{
WriteLine(“找到一个映像!{0}”,映像);
结果:添加(图像);
}
var subpath=Directory.EnumerateDirectories(
路径
"*.*",
SearchOption.TopDirectoryOnly);
foreach(子路径中的var子路径)
{
searchStack.Push(子路径);
}
}
捕获(未经授权的访问异常否)
{
WriteLine(“无法访问路径:{0}”,路径);
}
}
}
Ou Nice!:)这只是为了阅读。。但是在我的程序中有没有可能解锁它呢?:)我更新了我的答案,如果你正在研究如何通过编程实现这一点,那么如果你只是在谷歌上搜索abit,就会有很多关于如何实现这一点的博客/教程。哦,请不要这样做-配置文件文件夹上有读/写权限是有原因的;如果有其他方法,请不要使用核弹。您可能还需要确保该文件夹不是系统文件夹或隐藏文件夹。只要我的2美分。