C# 获取硬盘序列号

1.通过访问 Win32_DiskDrive 来获取: 1.1.直接 wmi 的方式: 1.2.通过执行 cmd 命令的方式: 2.通过访问 Win32_PhysicalMedia 来获取: 2.1.直接 wmi 的方式: 2.2.通过执行 cmd 命令的方式: 上述中使用到的 ExecuteCommand() 方法: 参考: https://community.spiceworks.com/topic/671307-retrieving-hard-drive-serial-number-via-wmic https://www.cnblogs.com/tommy-huang/p/10682660.html How To Get The Serial Number Of Hard Drive By C# Get Volume number in c# http://netcode.ru/dotnet/?artID=7284 Get Physical HDD Serial Number without WMI Get Hard Drive Serial Number

c# 执行 cmd 命令并获取返回结果

一次性返回结果: 使用: 将结果按行返回: 这里将返回结果按行存放到 list 里; 使用: 参考: https://stackoverflow.com/questions/4084402/get-hard-disk-serial-number https://blog.csdn.net/sinat_25185707/article/details/82467588

vs 2019 调试时无法查看部分变量的值

vs 2019 调试时无法查看部分变量的值, 在进行调试时,发现很多变量的值无法查看,鼠标移到变量上什么也没显示,甚至有些断点直接跳过去了,如下图: 鼠标移到 version 变量上时,完全没有提示。 在 Locals 显示框提示以下信息: Cannot obtain value of the local variable or argument because it is not available at this instruction pointer, possibly because it has been optimized away. 调试不就是为了跟踪每一行代码的执行情况,每个变量的变化情况吗,这什么也查看不了,不就失去了调式的意义了吗? 不过以前使用 vs 2013 的时候都可以正常调试的,难道 vs 2019 反倒退步了,我不信,根据之前安装 vs 2019 的经验,vs 2019 已经将很多原来捆绑在一起的东西,改为让用户自己选择安装,那么相关的一些功能会不会也采用了这样的思路,需要用户自己去设置呢,果不其然。 在网上查阅资料后得知, 只要进行以下设置,就可以像以前那样愉快的调试了。 第一步,打开项目的 Properties 第二步,点击 Build, 将 […]

C# 调用 dll 出现 The parameter is incorrect 错误

C# 调用 dll 出现 The parameter is incorrect 错误 我遇到的情况是,因为调用的 dll 方法,会接受包含特殊字符的参数,所以在方法的声明部分添加了 CharSet = CharSet.Auto,但是添加后,调用方法时就出现了 “ The parameter is incorrect ” 错误 经过检查,时因为其中一个参数为 int 类型,数值为 260,原本正常的程序,在添加了 CharSet 后就报错,提示 “The parameter is incorrect” (参数不正确),后面把数值改为 0,程序就允许正常了。 如果你遇到的也是这种情况,原来方法运行正常,但是修改了 DllImport 中的 CharSet 后反而报错,那么你就需要去逐一检查和测试,你传递的参数 真正的原因,我目前还没有找到,不过我猜测可能是因为不同 CharSet 对应的类型的字节不一样导致的问题 相关阅读: C++与C#数据类型对应关系总结 调用 dll 出现 The system cannot find the file specified 错误

调用 dll 出现 The system cannot find the file specified 错误

C# 中, 调用 dll 出现 The system cannot find the file specified 错误 最近在测试,使用的是 Hebrew 希伯来语的 Windows 10 系统,测试 C# 调用 newdev.dll 中的 UpdateDriverForPlugAndPlayDevices() 去安装驱动,该方法的声明如下: 在英文版的系统中测试正常,但是在 Hebrew 语的系统就报错,提示 “The system cannot find the file specified”,系统无法找到指定文件 但是传递的驱动文件是确切存在的,不过因为存放驱动的目录在用户目录下,我就思考是否因为路径的问题,因为路径包含 Hebrew 语的字符,导致 UpdateDriverForPlugAndPlayDevices() 无法识别文件路径,所以才提示无法找到指定文件 查找资料,发现 C# 在调用 dll 的方法时,确实可以指定字符集,见:Specifying a Character Set 然后我把 UpdateDriverForPlugAndPlayDevices() 方法的声明改为: 在 DllImport 中添加了 CharSet […]

C# 判断程序是否以管理员身份运行

C# 判断程序是否以管理员身份运行, C# 编写的桌面程序,有些操作是需要进行提权的,如下: 而在代码中可以通过 以下代码来识别软件是否已提权 参考: C# Check if run as administrator [duplicate] 推荐阅读: Run as administrator C# How do I force my .NET application to run as administrator? Visual Studio 查看当前程序所有线程

获取指定目录下的子目录

根据不同的需求选择不同的方法 获取指定目录下的子目录操作类有两个选择: Directory : 静态类,对文件夹的操作单一时选择; DirectoryInfo :动态类,对文件夹有多种不同操作时选择; 方法也有两种选择: GetDirectories() :需要等所有子目录都准备好才能进行操作,返回结果为数组类型,一般子目录数量不大时使用; EnumerateDirectories() :.net 4.0 后增加,更高效,无需等待子目录准备好就可以进行操作,返回结果为 IEnumerate<T> 类型,子目录数量巨大时优先使用; 注意:Directory 调用方法时,关键类型是 string;DirectoryInfo 则是 DirectoryInfo 类型; 上述两个方法都有 3 个重载,分别是: 返回当前目录下所有子目录 (默认,不处理子目录); 按通配符返回自定目录 (只支持 * 和 ?); 按通配符返回所有子目录 (所有层级) 获取指定目录下的子目录 测试目录结构: 处理代码: 结果: 默认只会返回 test 当前目录下的子目录: 返回当前目录下的包含 ”test“ 的目录: 返回所有层级包含 ”test“ 的目录: 返回所有子目录: 关于获取文件部分,请参考:C# 获取指定目录下的文件

C# 获取指定目录下的文件

使用到的类 DirectoryInfo 和 Directory,后者提供静态方法,可以直接使用; 对同一文件有多种操作时,可以使用 DirectoryInfo; 对文件的操作单一时,就是用 Directory 默认方式获取目录下的所有文件 C# 获取指定目录下的文件 使用 GetFiles() 方法,默认只返回当前目录下的文件,不处理子文件夹,该方法有三种重载: GetFiles() 不带参数,按默认返回 GetFiles(string pattern) 使用通配符返回指定文件,该模式只支持 * 和 ?作为通配符,不支持正则表达式(* 表示匹配多个字符,? 表示匹配一个字符) GetFiles(string pattern, SearchOptions option) 也支持通配符,SearchOptions 选择 AllDirectories 时,会返回子目录下的文件 注意: DirectoryInfo 返回的结果是 FileInfo 类型的数组; Directory 返回的结果则是 string 类型的数组 SearchOptions 类型 源代码如下: 枚举类型,控制只处理当前目录,还是会一并处理子目录 测试目录: D:\test\ 目录下 Directory 例子 默认返回当前目录所有文件 输出 files 结果为: 根据通配符返回结果: […]

Visual Studio 查看当前程序所有线程

查看当前所有线程 在程序中打断点,然后启动调试(注意:线程窗口需要启动调试才可以看得到)点击 Debug > Windows > Threads 线程窗口如下: