windows下获取文件描述
一 背景
前几天, 在公司写的获取文件描述的一段小程序出现了点小问题, 对于一般文件是正常的, 对于win10 C:\Program Files\WindowsApps目录下的通用程序,就是死活获取不到, 但是系统确是可以读出来的, 截图如下, 左边是能获取到的, 右边是比较各色的
之前用的方法参考
https://blog.csdn.net/liwen930723/article/details/49471459
vs跟踪调试了一下有问题的, 整个属性都获取到了, languageCharset也获取到了, 然后就是FileDescription死活获取不到, 但是看了看前边保存整个属性的内存, 文件描述就好好的躺在那, 左思右想不得要领, 于是拿调试器调试了一下系统是怎么获取的.原来系统是有备选方案的, 关键点就在 languageCharset上, 系统是先用从文件中读出来的languagecharset, 去获取, 获取不到再依次用0x040904B0,0x40904E4 ,0x04090000 去获取, 于是我按照这个逻辑试了一下, 真的就获取到了, 本文开头的问题就这么解决了, 但是你看系统给的备选值貌似存在某些规律, 而且 之前那个获取出来的languageCharset正好是0x00004B0, 于是又到网上去搜了搜, 结果发现, 正如这个东西的名字languagecharset, 高16bit 表示languageID, 低16bit表示codepage,
languageID: https://blog.csdn.net/tuwen/article/details/4160153
codepage: https://baike.baidu.com/item/codepage/416287
0x409 表示英语,
0x4E4 表示西欧拉丁字母ISO-8859-1
0x4B0 表示UCS-2LE Unicode 小端序
因为0x00004B0 表示语言的部分为0, 所以系统显示的就是语言为中性, 备选的都是英语的codepage组合, 问题到这终于圆满解决了.
不过, 本以为所有的显示"语言中性"的都这德行, 然而并不是, 所以我推测应该是某些编译器在生成这部分信息的时候出现了问题, 导致 languageCharset 跟其他信息不一致. 但是微软居然填这种坑, 所以我大胆的推测, 这个要么是当初定这个结构标准的时候没有设计好, 要么就真的微软自家的某些编译器组件的问题
windows下获取文件描述的更多相关文章
- Windows下获取文件的md5码的方法
1.certutil 命令简介 本来想找一个工具 算一个文件的md5 或者是sha 值来着. 找到一个说法是 可以使用 windows 自带的命令行来处理 具体命令 certutil -hashfil ...
- windows下获取IP地址的两种方法
windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...
- 关于Windows下的文件后缀名问题
一.背景说明 有很多的小伙伴对windows下的文件后缀名不能很好地理解作用和区别,更不用说高深的使用了,在这里给大家说一下这些文件后缀名到底有什么区别,有什么作用呢? 二.说明 简单的说来,wind ...
- Windows下获取本机IP地址方法介绍
Windows下获取本机IP地址方法介绍 if((hostinfo = gethostbyname(name)) != NULL) { #if 1 ; printf("IP COUNT: % ...
- Windows下获取高精度时间注意事项
Windows下获取高精度时间注意事项 [转贴 AdamWu] 花了很长时间才得到的经验,与大家分享. 1. RDTSC - 粒度: 纳秒级 不推荐优势: 几乎是能够获得最细粒度的计数器抛弃理由: ...
- Linux Linux下最大文件描述符设置
Linux下最大文件描述符设置 by:授客 QQ:1033553122 1. 系统可打开最大文件描述符设置 查看系统可打开最大文件描述符 # cat /proc/sys/fs/file-max 6 ...
- c和c++在windows下获取时间和计算时间差的方法总结
c/c++在windows下获取时间和计算时间差的几种方法总结 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double diff ...
- 将Windows下的文件同步到Linux下
需求:把Windows下的某些文件自动传送到Linux指定目录下 实现: 1. Windows下安装 WinSCP工具,并把Liunx服务器信息保存 2. 编写脚本,实现双击工具就把Windows下的 ...
- C语言实现Windows下获取IP和MAC地址。
C语言实现Windows下获取IP和MAC地址. #include <winsock2.h> #include <stdio.h> #include <stdlib.h& ...
随机推荐
- [配置] win下maven配置
下载解压 打开环境变量 新建MAVEN_HOME 路径为maven根文件夹 PATH 末尾添加 %MAVEN_HOME%\bin; 命令行 mvn -v 检查 添加网易maven镜像库 阿里的也可以 ...
- vue 监听手机键盘是否弹出及input是否聚焦成功
//定义移动端类型 function pageStats() { let u = navigator.userAgent, app = navigator.appVersion; let obj = ...
- L1-046 整除光棍
这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1.11.111.1111等.传说任何一个光棍都能被一个不以5结尾的奇数整除.比如,111111就可以被13整除. 现在,你的程序 ...
- Python的内置方法——补充
七 __setitem__,__getitem__,__delitem__ class Foo: def __init__(self,name): self.name=name def __getit ...
- PyCharm设置仿sublime配色__Py版本2018.3.5
效果图: 导出settings 模板为: 1.https://files.cnblogs.com/files/xier/PyCharm_settings.zip 2.https://files.cnb ...
- async await 同时发起多个异步请求的方法
@action getBaseInfo = async() => { let baseInfo; try { baseInfo = await getBaseInfo(this.id); if ...
- 【linux日常】 ACL权限管理
ACL ((Access Control Lists) setfacl命令 这里引用一个非常详细的命令介绍. 要点: getfacl -R 递归获取acl权限,可以存储为文件以备还原 g ...
- 为什么以sys无法远程登录数据库
今天通过pl/sql连接一个数据库,普通用户能连接上,但是sys就连接不上,告诉我用户名密码错误.之前其实遇到过这个问题,然后就开始查找原因.整个过程记录如下,结果是扎心的,过程也不是完全都懂.记下来 ...
- css颜色的设置
css的颜色设置 1.英文命令颜色 p{color:blue;}RGB颜色 2.与 photoshop 中的 RGB 颜色一致,由 R(red).G(green).B(blue) 三种颜色的比例来配色 ...
- DataGrip for Mac破解步骤详解 亲测好用
https://blog.csdn.net/le945926/article/details/81912085