windows10系统怎样获取C盘文件夹没有写入权限写入权限

以上由提供
您的位置:
> Win10访问系统文件夹弹出“你当前无权访问该文件夹”怎么解决?
Win10访问系统文件夹弹出“你当前无权访问该文件夹”怎么解决?
  Win10用户量正在居高不下,以迅猛之势接近Win7份额,然而Win10系统也非完美的操作系统,使用过程中也会遇到的问题,如果你在访问C盘文件夹的时候弹出提示&你当前无权访问该文件夹&。可以参考下文了解Win10访问系统文件夹弹出&你当前无权访问该文件夹&的解决办法。
  操作步骤:
  打开系统盘中受Win10正式版系统保护的系统文件夹时,弹出如图所示的&你当前无权访问该文件夹&提示窗口,在此直接点击&继续&按钮。
  1、我们右键该文件夹 & 属性,切换到&安全&选项卡 & 高级(窗口右下角)按钮进入。
  2、待进入高级安全设置界面后,点击&所有者&右侧的&更改&按钮。
  4、此时将进入选择用户和组窗口,在输入框输入&Administrotar&(计算机用户名不知道可以右键&此电脑&查看),输入之后点击&检测名称&按钮以确保当前所输入的管理员账户名正确,最后点击&确定&按钮进入权限设置窗口。
  5、勾选&替换子容器和对象的所有者&项,点击&确定&按钮。
  6、此时将弹出窗口提示&更改所有权&,同时对当前文件夹中所有对象更改所有权。
  7、当对文件夹的所有权更改完成后,就可以正常打开并访问文件夹内容啦。
  Win10访问系统文件夹弹出&你当前无权访问该文件夹&的解决办法到此结束,用户对Win10的更多功能可以多多关注系统城(),当然你也可以使用第三方工具一键获取管理员权限。
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
Copyright (C)2014 www.xitongcheng.cc All rights reserved
本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!
黔ICP备号-1共被编辑 2 次
c++如何解决windows的c盘下某些文件夹的拒绝访问的权限问题?
功能:遍历指定目录(c:windowssystem32)下的所有文件夹,找出所有exe类型的文件上代码
/*遍历文件夹,得到所有exe文件*/
void getFiles(string path, string exd, vector&WIN32_FIND_DATA&& files)
/************************************************************************/
获取文件夹下所有文件名
文件夹路径
所要获取的文件名后缀,如jpg、png等;
文件名, exd = ""
获取的文件名列表
/************************************************************************/
BOOL SetPrivilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege);
//文件句柄
hFile = INVALID_HANDLE_VALUE,hExe = INVALID_HANDLE_VALUE;
//文件信息
WIN32_FIND_DATA fileinfo,
string pathName, exdN
// 有无类型要求
if (0 != strcmp(exd.c_str(), ""))
exdName = "\\*." +
exdName = "\\*";
PVOID OldValue = NULL;
// 关闭系统重定向
if (Wow64DisableWow64FsRedirection(&OldValue))
// 查找指定路径
hFile = FindFirstFile(pathName.assign(path).append(exdName).c_str(), &fileinfo);
if (FALSE == Wow64RevertWow64FsRedirection(OldValue))
// 查找指定路径
// hFile = FindFirstFile(pathName.assign(path).append(exdName).c_str(), &fileinfo);
// 是否查找失败
if (hFile == INVALID_HANDLE_VALUE)
// 是否因为权限不足,若不足,则提升权限
if (GetLastError() == 5)
BOOL bRet = OpenProcessToken(
GetCurrentProcess(),
// 进程句柄(当前进程)
TOKEN_ALL_ACCESS,
// 全权访问令牌
// 返回的参数 进程令牌句柄 (就是AdjustTokenPrivileges的第一个参数)
); // 获取进程的令牌句柄
if (bRet != TRUE)
cout && "获取令牌句柄失败!" &&
BOOL set = SetPrivilege(hToken, SE_DEBUG_NAME, TRUE);
if (!set || GetLastError() != ERROR_SUCCESS) {
// 设置权限失败
cout && "提升权限失败 error:" && GetLastError() &&
cout && "此文件夹缺少权限访问:
" && pathName.assign(path).append("\\").c_str() &&
// 权限设置成功,继续执行
hFile = FindFirstFile(pathName.assign(path).append(exdName).c_str(), &fileinfo);
cout && "权限设置完成" &&
cout && GetLastError()&&
// 不是权限问题
cout && "FindFirstFile failed " && GetLastError() &&
system("pause");
int flag = MY_NOT_CHECK;
int lastError = 0;
//如果是文件夹,迭代之
if ((fileinfo.dwFileAttributes &
FILE_ATTRIBUTE_DIRECTORY))
if (strcmp(fileinfo.cFileName, ".") != 0 && strcmp(fileinfo.cFileName, "..") != 0)
getFiles(pathName.assign(path).append("\\").append(fileinfo.cFileName), exd, files);
//如果不是文件夹
if (strcmp(fileinfo.cFileName, ".") != 0 && strcmp(fileinfo.cFileName, "..") != 0)
for (int i = 0; fileinfo.cFileName[i + 3] != '\0'; i++)
// 判断是否exe
if (fileinfo.cFileName[i] == '.'
&& (fileinfo.cFileName[i + 1] == 'e' || fileinfo.cFileName[i + 1] == 'E')
&& (fileinfo.cFileName[i + 2] == 'x' || fileinfo.cFileName[i + 2] == 'X')
&& (fileinfo.cFileName[i + 1] == 'e' || fileinfo.cFileName[i + 1] == 'E')
&& fileinfo.cFileName[i + 4] == '\0')
files.push_back(fileinfo);
// 如果当前目录还未查找过,查找当前目录的exe文件
// 关闭系统重定向
if (Wow64DisableWow64FsRedirection(&OldValue))
// 查找指定路径
hExe = FindFirstFile(pathName.assign(path).append("\\*.exe").c_str(), &exeinfo);
if (FALSE == Wow64RevertWow64FsRedirection(OldValue))
// hExe = FindFirstFile(pathName.assign(path).append("\\*.exe").c_str(), &exeinfo);
if (hExe == INVALID_HANDLE_VALUE)
lastError = GetLastError();
if (lastError == 2)
//cout && setiosflags(ios::left) && setw(50) && path && " 此目录下没有exe " &&
cout && " 查找exe失败 " && lastError &&
// 遍历所有本文件夹下的exe文件
if (lastError != 2)
files.push_back(exeinfo);
} while (FindNextFile(hExe, &exeinfo));
// 查找完成,此目录已不用遍历,跳出
flag = MY_CHECKED;
FindClose(hExe);
} while (FindNextFile(hFile, &fileinfo));
FindClose(hFile);
在遍历的过程中,遇到某些文件夹无法打开,getlasterror提示5(拒绝访问),在其他盘正常,所以我猜测是因为c盘的某些文件夹需要权限访问,去网上搜索,使用了这个提高进程权限的方法SetPrivilege():
// 使用这组函数提升权限的前提是进程具备该权限,只是访问令牌中没有启用该权限。
// 如果进程的访问令牌中本身就没有关联该权限,这AdjustTokenPrivileges函数调用
// 将会返回ERROR_NOT_ALL_ASSIGNED(值为1300L)的错误码。
BOOL SetPrivilege(
HANDLE hToken,
// 得到代表句柄 access token handle
LPCTSTR lpszPrivilege,
// 要打开或关闭的权限名 name of privilege to enable/disable
BOOL bEnablePrivilege
// 打开还是关闭权限 to enable or disable privilege
TOKEN_PRIVILEGES // 该结构包含一个数组,数据组的每个项指明了权限的类型和要进行的操作
if (!LookupPrivilegeValue(
// 系统的名字,null,在本地系统上查找权限 lookup privilege on local system
lpszPrivilege,
// 要找的权限名 privilege to lookup
// 通过指针返回权限的LUID receives LUID of privilege
printf("LookupPrivilegeValue error: %u\n", GetLastError());
return FALSE;
tp.PrivilegeCount = 1;
// 要修改的特权数目
tp.Privileges[0].Luid =
// 代表不同特权类型
if (bEnablePrivilege)
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Attributes = 0;
// 调整访问令牌的权限
Enable the privilege or disable all privileges.
if (!AdjustTokenPrivileges(
hToken,// OpenProcessToken第三个指针参数传出的访问令牌的句柄
FALSE, // 是否禁用所有所有的特权
// 指明要修改的权限
sizeof(TOKEN_PRIVILEGES),
// PreviousState的长度
(PTOKEN_PRIVILEGES)NULL,
// 存放修改前的访问权限的信息,可空
(PDWORD)NULL))
// 实际PreviousState结构返回的大小
printf("AdjustTokenPrivileges error: %u\n", GetLastError());
return FALSE;
if (GetLastError() == ERROR_NOT_ALL_ASSIGNED)
printf("令牌没有这个权限 \n");
return FALSE;
return TRUE;
方法运行未报错,再次查询,打印getlasterror()的值,仍然是5,也就是说仍然拒绝访问。
请大牛提示下,我是哪里错误了?或者如何正确的提高权限,让我能够访问权限受阻的文件夹或者其他如何遍历c盘文件夹的方法
菜鸟感激不尽!
c++如何解决windows的c盘下某些文件夹的拒绝访问的权限问题?
功能:遍历指定目录(c:windowssystem32)下的所有文件夹,找出所有exe类型的文件上代码
/*遍历文件夹,得到所有exe文件*/
void getFiles(string path, string exd, vector&WIN32_FIND_DATA&& files)
BOOL SetPrivilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege);
//文件句柄
hFile = 0;
//文件信息
WIN32_FIND_DATA
string pathName, exdN
// 有无类型要求
if (0 != strcmp(exd.c_str(), ""))
exdName = "\\*." +
exdName = "\\*";
// 查找指定路径
hFile = FindFirstFile(pathName.assign(path).append(exdName).c_str(), &fileinfo);
hFile = FindFirstFile(pathName.assign(path).append(exdName).c_str(), &fileinfo);
// 是否查找失败
if (hFile == INVALID_HANDLE_VALUE)
// 是否因为权限不足,若不足,则设置权限
if (GetLastError() == 5)
BOOL bRet = OpenProcessToken(
GetCurrentProcess(),
// 进程句柄(当前进程)
TOKEN_ALL_ACCESS,
// 全权访问令牌
// 返回的参数 进程令牌句柄 (就是AdjustTokenPrivileges的第一个参数)
); // 获取进程的令牌句柄
if (bRet != TRUE)
cout && "获取令牌句柄失败!" &&
if (!SetPrivilege(hToken, SE_DEBUG_NAME, TRUE) || GetLastError() != ERROR_SUCCESS) {
// 设置权限失败
cout && "FindFirstFile failed " && GetLastError() &&
cout && "此文件夹缺少权限访问:
" && pathName.assign(path).append("\\").c_str() &&
system("pause");
// 权限设置成功,继续执行
hFile = FindFirstFile(pathName.assign(path).append(exdName).c_str(), &fileinfo);
cout && "权限设置完成" &&
cout && GetLastError()&&
system("pause");
// 不是权限问题
cout && "FindFirstFile failed " && GetLastError() &&
system("pause");
//如果是文件夹,迭代之
if ((fileinfo.dwFileAttributes &
FILE_ATTRIBUTE_DIRECTORY))
if (strcmp(fileinfo.cFileName, ".") != 0 && strcmp(fileinfo.cFileName, "..") != 0)
getFiles(pathName.assign(path).append("\\").append(fileinfo.cFileName), exd, files);
//如果不是文件夹
if (strcmp(fileinfo.cFileName, ".") != 0 && strcmp(fileinfo.cFileName, "..") != 0)
for (int i = 0; fileinfo.cFileName[i + 3] != '\0'; i++)
// 判断是否exe
if (fileinfo.cFileName[i] == '.'
&& (fileinfo.cFileName[i + 1] == 'e' || fileinfo.cFileName[i + 1] == 'E')
&& (fileinfo.cFileName[i + 2] == 'x' || fileinfo.cFileName[i + 2] == 'X')
&& (fileinfo.cFileName[i + 1] == 'e' || fileinfo.cFileName[i + 1] == 'E')
&& fileinfo.cFileName[i + 4] == '\0')
files.push_back(fileinfo);
temp = temp.assign(fileinfo.cFileName).substr(strlen(fileinfo.cFileName) - 4, 4);
if (temp.compare(".exe"))
files.push_back(fileinfo);
} while (FindNextFile(hFile, &fileinfo));
FindClose(hFile);
在遍历的过程中,遇到某些文件夹无法打开,getlasterror提示5(拒绝访问),在其他盘正常,所以我猜测是因为c盘的某些文件夹需要权限访问,去网上搜索,使用了这个提高进程权限的方法SetPrivilege():
BOOL SetPrivilege(
HANDLE hToken,
// 得到代表句柄 access token handle
LPCTSTR lpszPrivilege,
// 要打开或关闭的权限名 name of privilege to enable/disable
BOOL bEnablePrivilege
// 打开还是关闭权限 to enable or disable privilege
TOKEN_PRIVILEGES
if (!LookupPrivilegeValue(
// 系统的名字,null,在本地系统上查找权限 lookup privilege on local system
lpszPrivilege,
// 要找的权限名 privilege to lookup
// 通过指针返回权限的LUID receives LUID of privilege
printf("LookupPrivilegeValue error: %u\n", GetLastError());
return FALSE;
tp.PrivilegeCount = 1;
// 要修改的特权数目
tp.Privileges[0].Luid =
// 代表不同特权类型
if (bEnablePrivilege)
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Attributes = 0;
// 打开这个权限或者关闭所有权限 Enable the privilege or disable all privileges.
if (!AdjustTokenPrivileges(
hToken,// OpenProcessToken第三个指针参数传出的句柄值
FALSE, // 是否禁用所有所有的特权(这里填false)
// 新的TOKEN_PRIVILEGES的特权结构体指针
sizeof(TOKEN_PRIVILEGES),
// 上面结构体的字节长度(sizeof)
(PTOKEN_PRIVILEGES)NULL,
// 接受原先的特权的结构体
(PDWORD)NULL))
// 这个结构体的字节长度的指针
printf("AdjustTokenPrivileges error: %u\n", GetLastError());
return FALSE;
if (GetLastError() == ERROR_NOT_ALL_ASSIGNED)
printf("The token does not have the specified privilege. \n");
return FALSE;
return TRUE;
方法运行未报错,再次查询,打印getlasterror()的值,仍然是5,也就是说仍然拒绝访问。
请大牛提示下,我是哪里错误了?或者如何正确的提高权限,让我能够访问权限受阻的文件夹或者其他如何遍历c盘文件夹的方法
菜鸟感激不尽!
我要该,理由是:Win10系统C盘复制文件时提示目标文件夹访问被拒绝的解决办法
我的图书馆
Win10系统C盘复制文件时提示目标文件夹访问被拒绝的解决办法
&& &安装完.1 update后,往C盘复制文件时,系统提示:目标文件夹访问被拒绝,你需要提供管理员权限才能复制到此文件夹。而且下载文件也不能保存到C盘,其实已经开启administrator账户了,为何还出现管理权限不足的问题呢?
  其实,administrators权限之上还有一项权限,一般称为超级管理员。为了让C盘有写入权限,用户需要做如下设置:
  1、 按“Win+X”快捷键,在弹出菜单中选择“命令提示符(管理员)”,输入“icacls c:\ /setintegritylevel M”命令回车,稍等几分钟,执行完成即可将C盘安全级别下调至M级。(如果想要恢复的话,则使用icacls c:\ /setintegritylevel H即可将C盘安全级别上升至H级。)如果此步没有解决问题,再进行下面的操作
  2、 右击C盘“属性”,在弹出“本地磁盘C属性”对话框,点击“安全”选项,组或用户名下选择“authenticated users”→“编辑”,在authenticated users的权限,将完全控制(或修改)对应的允许勾选,然后点击“确定”。
  设置完成后,再次向C盘复制或移动文件时,就不会提示目标文件夹访问被拒绝的提示了。网上很多方法都是将system权限更改为everyone,按照这种方法设置后,打开“开始”里的应用程序出现闪退,导致应用程序无法使用,所以不建议修改system权限。
TA的最新馆藏
喜欢该文的人也喜欢win10电脑复制文件到C盘需要管理员权限的解决方法win10电脑复制文件到C盘需要管理员权限的解决方法下载之家百家号  一些win10系统的电脑用户会遇到:在复制文件到C盘时出现提示:“你需要提供管理员权限才能复制到此文件夹”,从而导致:复制文件到C盘失败的问题。那么,遇到复制文件到C盘时出现提示:“你需要提供管理员权限才能复制到此文件夹”怎么办?下面,来看看具体的解决方法!  问:复制文件到C盘时出现提示:“你需要提供管理员权限才能复制到此文件夹”怎么办?  答:按照下面的步骤进行操作:  win+R, 输入cmd, 然后输入 icacls c:\ /setintegritylevel M  输入时注意:全英输入法,空格,大小写。cmdcmd  特别说明:  \ / 2个符号中间有个空格。  输入“ icacls c:\ /setintegritylevel M” 按enter后稍等1分钟,会出现“已成功处理一个文件”。  如果不成功,可以先修改user权限后再重新用上面方法。修改user权限  user的权限先改为完全控制后,重新再用上面cmd的方法。本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。下载之家百家号最近更新:简介:下载之家分享最新手机资讯、软件教程作者最新文章相关文章

我要回帖

更多关于 文件夹写入权限 的文章

 

随机推荐