注册 登录
编程论坛 C语言论坛

求助: 对路径“C:\Documents and Settings”的访问被拒绝。

追梦人zmrghy 发布于 2023-04-24 14:18, 226 次点击
程序作用,自动搜索硬盘目录
如果目录中,同时有.sln文件和.VS子目录,就删除.VS子目录

只有本站会员才能查看附件,请 登录


程序代码:
#include<iostream>
using namespace System;
using namespace System::IO;
using namespace System::Collections::Generic;

bool Seek_Harddisk_Partition(List<String^>^ list) //查找硬盘有几个分区
{
    char diskpart[4] = { 'C',':','\\','\0' };
    String^ _disk = gcnew String(diskpart);
    if(!Directory::Exists(_disk))
        return false;
    while (Directory::Exists(_disk))
    {        
        list->Add(_disk);
        diskpart[0] += 1;
        _disk = gcnew String(diskpart);
    }
    return true;
}
int CharOccurrenceNumber(String^ Str, String^ Ch) //查找路径中‘\’出现次数,来判断当前是第几层目录
{
    int Ret = 0;
    while(Str->IndexOf(Ch) != -1)
    {
        Ret++;
        Str = Str->Substring(Str->IndexOf(Ch) + 1);
    }
    return Ret;
}
void Seek_Directory(String^ _path)
{
    if (Directory::GetFiles(_path, "*.sln") != nullptr) //如果目录中,同时有.sln文件和.VS子目录,就删除.VS子目录
    {
        if (Directory::Exists(_path + "\.VS"))
            Directory::Delete(_path + "\.VS");
    }
    if (CharOccurrenceNumber(_path, "\\") < 5)                //寻找5层目录,
    {
        array<String^>^ PathList = Directory::GetDirectories(_path);
        for each (auto i in PathList)
            Seek_Directory(i);
    }
}
int main()
{
    List<String^>^ DiskList = gcnew List<String^>();
    if (!Seek_Harddisk_Partition(DiskList))
        return -1;
    for each (auto i in DiskList)
        Seek_Directory(i);

    return 1;
}


[此贴子已经被作者于2023-4-24 14:49编辑过]

10 回复
#2
吹水佬2023-04-24 14:36
通常是拒绝访问受保护的系统文件夹
相关:查看“隐藏受保护的系统文件”、Documents and Settings 属性“安全,权限”

#3
追梦人zmrghy2023-04-24 14:40
回复 2楼 吹水佬
怎么换这样头像了。。。。


是系统问题呀。。。
不是我写的程序有问题。。。。
#4
wp2319572023-04-24 15:15
回复 3楼 追梦人zmrghy
win10 吧   有些目录 资源管理器都打不开的  
#5
apull2023-04-24 15:34
Documents and Settings这个文件夹是xp下的,win7以后他是个指向C:\Users的连接。要辨认一下。

[此贴子已经被作者于2023-4-24 15:35编辑过]

#6
wp2319572023-04-24 16:10
回复 5楼 apull
win10  这个目录 无法打开   无法设置权限   如何破
#7
apull2023-04-24 17:03
Seek_Directory 里加个try,有异常则返回,继续下一个目录
不会C++/CLR,改成C#了,原理一样。
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2023-4-24 17:31编辑过]

#8
追梦人zmrghy2023-04-24 17:46
回复 5楼 apull
可以用Try跳过这个目录吗?

现在程序,是递归调用。
对递归调用,不是很熟悉。
平时根本没使用过递归,只是学习递归的时候,用递归写过求阶乘。。。
Try平时,也没使用过。。。。



这个程序,如何添加Try,代码应该如何修改呀???
#9
东海ECS2023-04-24 18:51
这个问题可能是因为您的程序没有足够的权限访问“C:\Documents and Settings”目录。更改您的程序所运行的用户,或者以管理员身份运行您的程序,可能会解决这个问题。您也可以尝试用try-catch语句来捕捉并处理许可问题。请注意,在Windows Vista及更高版本的Windows操作系统中,“C:\Documents and Settings”目录不存在,应该使用“C:\Users”目录代替。
#10
apull2023-04-24 19:35
回复 8楼 追梦人zmrghy
看图上的代码。
#11
吹水佬2023-04-24 21:13
win10的也可以操作,重建Everyone权限就OK
只有本站会员才能查看附件,请 登录

1