我面临两个问题,一个大问题,一个小问题:) 问题 #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 听起来不像是正确的变量名称 - 更改它以反射(reflect)现实。
另外,你应该有这个:
DWORD BufSize = sizeof(Buffer) - 1;
而且,最好不要同时拥有 buffer
和 Buffer
变量。
2。从回收站中删除一个文件
根据微软documentation在 SHFileOperation 上,你应该只使用 DeleteFile
文件名如 C:\$Recycle.Bin\file.txt
:
- 当用于删除文件时,除非您在 lpFileOp 指向的 SHFILEOPSTRUCT 结构的 fFlags 成员中设置 FOF_ALLOWUNDO 标志,否则 SHFileOperation 会永久删除该文件。设置该标志会将文件发送到回收站。 如果您只想删除一个文件并保证它不在回收站中,请使用 DeleteFile。
关于c++ - 如何使用 C++ 获取机器 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14683834/