如何使用c++获取机器id
How to get Machine id using c++
am面临两个问题——一个大问题和一个小问题:)问题#1:我无法从以下路径读取计算机ID。。。我得到的处理器名称像intel i7@2.2ghz那样,我不知道为什么,我应该得到机器id,长整数字符串,但我没有得到,所以请帮助
reg_path="SOFTWARE\Microsoft\Cryptography";
rvalue="MachineGuid"; // data value
我的寄存器读取功能
string read_reg_sz(char rpath[],char rdata[]) // read registery Loaction
{
REGSAM flag = KEY_WOW64_32KEY or KEY_WOW64_64KEY;
char buffer[MAX];
char Buffer[MAX];
DWORD BufSize = _MAX_PATH;
char dwMHz[MAX];
DWORD dataType = REG_SZ;
HKEY hKey;
long lError = RegOpenKeyEx(HKEY_LOCAL_MACHINE,rpath,NULL, KEY_READ | KEY_WRITE | flag,&hKey);
if(lError != ERROR_SUCCESS)
{// if the key is not found, tell the user why:
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
lError,
0,
Buffer,
_MAX_PATH,
0);
cout<<"n reg erro : "<<Buffer;
return "N/A";
}
// query the key:
RegQueryValueEx(hKey,rdata,NULL,&dataType,(LPBYTE) &dwMHz,&BufSize);
RegCloseKey(hKey); // close open handle ....
cout<<"n reg data read: "<<dwMHz;
return dwMHz;
}
第二个问题:目前我有完全清洁回收站的功能:)
SHEmptyRecycleBin(NULL, NULL, SHERB_NOCONFIRMATION | SHERB_NOPROGRESSUI | SHERB_NOSOUND);
但我想从回收站中删除单个文件,就像传递文件名
你真的应该把它作为两个不同的问题发布,但我会尽力回答这两个问题。
1.获取MachineGuid
我认为你的问题是这样的:
// query the key:
RegQueryValueEx(hKey,rdata,NULL,&dataType,(LPBYTE) &dwMHz,&BufSize);
您应该将其更改为:
// query the key:
RegQueryValueEx(hKey,rvalue,NULL,&dataType,(LPBYTE) &dwMHz,&BufSize);
顺便说一句,dhMHz听起来不像是一个正确的变量名称——改变它以反映现实。
此外,你应该有这个:
DWORD BufSize = sizeof(Buffer) - 1;
并且,最好不要同时具有buffer
和Buffer
变量。
2.从回收站删除一个文件
根据微软关于SHFileOperation的文档,你应该只在文件名上使用DeleteFile
,比如C:$Recycle.Binfile.txt
:
- 用于删除文件时,除非在lpFileOp指向的SHFILEOPSTRUCT结构的fFlags成员中设置了FOF_ALLOWUNDO标志,否则SHFileOperation将永久删除该文件。设置该标志会将文件发送到回收站如果您只想删除一个文件并保证它不会被放入回收站,请使用DeleteFile
要从回收站中删除单个文件,请使用SHGetSpecialFolderLocation(CSIDL_BITBUCKET)
或SHGetKnownFolderIDList(FOLDERID_RecycleBinFolder)
获取回收站的绝对PIDL,然后使用SHBindToObject()
为其获取IShellFolder
接口,并调用其ParseDisplayName()
方法将所需文件名转换为相对PIDL,再使用SHBindToObject()
为该文件获取IContextMenu
接口,并使用其InvokeCommand()
方法执行文件的"删除"谓词。
相关文章:
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何在本地机器上运行c++和javascript客户端代码(hackerbank风格)
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 从函数角度看ID到文件路径的内部与外部映射
- 通过组合不同的类型来创建唯一的id
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- FFMPEG配置文件级别id大小无效
- 64位机器上的C++内存对齐
- 方法内部但循环仍得到预期的不合格id错误C++
- 使用不同的链接器会产生不同的机器代码吗
- 我写了一个C++程序来模拟Enigma机器.我没有得到输出
- 如何获取 GLFW 窗口 ID?
- 当简单捕获中的标识符显示为参数的声明符 ID 时,没有编译器诊断
- 显示数组中的学生 ID 和最高分
- C++:"("令牌"之前有预期的非限定 id 指向类中成员函数的指针
- 在PostgreSQL中根据它们的ID选择大量行的最快方法是什么?
- Xcode 9.4.1 中的 Apple Mach-O 链接器 (id) 错误
- 获取 MAC OS X 的机器 ID
- 用于在稀疏机器学习中生成uint64或uint32特征id的良好哈希函数
- 如何使用c++获取机器id