资讯专栏INFORMATION COLUMN

c++ 遍历查找win指定路径下指定类型的文件

xi4oh4o / 1694人阅读

摘要:遍历文件夹,得到所有文件获取文件夹下所有文件名输入文件夹路径所要获取的文件名后缀,如等文件名输出获取的文件名列表文件句柄文件信息关闭系统重定向查找指定路径查找指定路径是否查找失败是否因为权限不足,若不足,则提升权限进程句柄当前进程全权访问令

#include "stdafx.h"
#include 
#include 
#include 
#include   
#include 
#include 
#include 

#define MY_NOT_CHECK  1;
#define MY_CHECKED  0;
using namespace std;

int main(){
    string path("c:Windowssystem32"), exd("exe");
    vector files;
    void getFiles(string path, string exd, vector& files);
    
    getFiles(path, exd, files);
   
    sort(files);

    show(files);
}

/*遍历文件夹,得到所有exe文件*/
void getFiles(string path, string exd, vector& files)
{
    /************************************************************************/
    /*  获取文件夹下所有文件名
    输入:
    path    :    文件夹路径
    exd        :   所要获取的文件名后缀,如jpg、png等;
    文件名, exd = ""
    输出:
    files    :    获取的文件名列表
    */
    /************************************************************************/
    BOOL SetPrivilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege);

    //文件句柄
    HANDLE  hFile = INVALID_HANDLE_VALUE,hExe = INVALID_HANDLE_VALUE;
    //文件信息
    WIN32_FIND_DATA fileinfo,exeinfo;
    string pathName, exdName = "*";
    PVOID OldValue = NULL;
    
    // 关闭系统重定向
    if (Wow64DisableWow64FsRedirection(&OldValue))
    {
        // 查找指定路径
        hFile = FindFirstFile(pathName.assign(path).append(exdName).c_str(), &fileinfo);

        if (FALSE == Wow64RevertWow64FsRedirection(OldValue))
        {
            return;
        }
    }
    

    // 查找指定路径
    // hFile = FindFirstFile(pathName.assign(path).append(exdName).c_str(), &fileinfo);

    // 是否查找失败
    if (hFile == INVALID_HANDLE_VALUE)
    {
        // 是否因为权限不足,若不足,则提升权限
        if (GetLastError() == 5)
        {
            HANDLE hToken;
            BOOL bRet = OpenProcessToken(
                GetCurrentProcess(),    // 进程句柄(当前进程)
                TOKEN_ALL_ACCESS,    // 全权访问令牌
                &hToken    // 返回的参数 进程令牌句柄 (就是AdjustTokenPrivileges的第一个参数)
                ); // 获取进程的令牌句柄
            if (bRet != TRUE)
            {
                cout << "获取令牌句柄失败!" << endl;
                return;
            }
            BOOL set = SetPrivilege(hToken, SE_DEBUG_NAME, TRUE);
            if (!set || GetLastError() != ERROR_SUCCESS) {
                // 设置权限失败
                cout << "提升权限失败 error:" << GetLastError() << endl;
                cout << "此文件夹缺少权限访问:    " << pathName.assign(path).append("").c_str() << endl;
                return;
            }
            // 权限设置成功,继续执行
            hFile = FindFirstFile(pathName.assign(path).append(exdName).c_str(), &fileinfo);
            cout << "权限设置完成" << endl;
            cout << GetLastError()<           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/61008.html

相关文章

  • Windows Server 2012 R2搭建 Apache+PHP+MYSQL环境

    摘要:打开窗口,转到目录。的意思是启动服务的时候跳过权限表认证。连接权限数据库。刷新权限必须步骤。重启方式重启方式在桌面开始菜单中选择运行,输入找到右键重启就可以了通过命令进行操作之前,需要将安装目录下的目录加入计算机的环境变量的里面。 环境说明: 操作系统:Windows Server 2012 R2 PHP版本:php-5.6.35-Win32-VC11-x64下载地址:https://...

    mudiyouyou 评论0 收藏0
  • Windows Server 2012 R2搭建 Apache+PHP+MYSQL环境

    摘要:打开窗口,转到目录。的意思是启动服务的时候跳过权限表认证。连接权限数据库。刷新权限必须步骤。重启方式重启方式在桌面开始菜单中选择运行,输入找到右键重启就可以了通过命令进行操作之前,需要将安装目录下的目录加入计算机的环境变量的里面。 环境说明: 操作系统:Windows Server 2012 R2 PHP版本:php-5.6.35-Win32-VC11-x64下载地址:https://...

    韩冰 评论0 收藏0
  • Windows Server 2012 R2搭建 Apache+PHP+MYSQL环境

    摘要:打开窗口,转到目录。的意思是启动服务的时候跳过权限表认证。连接权限数据库。刷新权限必须步骤。重启方式重启方式在桌面开始菜单中选择运行,输入找到右键重启就可以了通过命令进行操作之前,需要将安装目录下的目录加入计算机的环境变量的里面。 环境说明: 操作系统:Windows Server 2012 R2 PHP版本:php-5.6.35-Win32-VC11-x64下载地址:https://...

    dunizb 评论0 收藏0
  • Windows Server 2012 R2搭建 Apache+PHP+MYSQL环境

    摘要:打开窗口,转到目录。的意思是启动服务的时候跳过权限表认证。连接权限数据库。刷新权限必须步骤。重启方式重启方式在桌面开始菜单中选择运行,输入找到右键重启就可以了通过命令进行操作之前,需要将安装目录下的目录加入计算机的环境变量的里面。 环境说明: 操作系统:Windows Server 2012 R2 PHP版本:php-5.6.35-Win32-VC11-x64下载地址:https://...

    yanest 评论0 收藏0
  • Linux就该这么学【基础指令】

    摘要:将目录象文件一样显示,而不是显示其下的文件。如指定文件以字节的形式表示文件的大小。介绍,在每个文件名后附上一个字符以说明该文件的类型,表示可执行的普通文件表示目录表示符号链接表示表示套接字。是建立目录,而是删除命令。 ...

    happyhuangjinjin 评论0 收藏0

发表评论

0条评论

xi4oh4o

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<