0

2つの問題に直面しています1つの大きな問題と1つの小さな問題:)問題#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;
}

2番目の問題:現在、私はごみ箱を完全にきれいにすることができる機能を持っています:)

SHEmptyRecycleBin(NULL, NULL, SHERB_NOCONFIRMATION | SHERB_NOPROGRESSUI | SHERB_NOSOUND); 

しかし、ファイル名を渡すようにごみ箱から単一のファイルを削除したい

4

2 に答える 2

3

あなたは本当にそれを2つの異なる質問として投稿するべきですが、私は両方に答えようとします.

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. ごみ箱からファイルを 1 つ削除する

SHFileOperation に関するMicrosoftのドキュメントDeleteFileによると、次のようなファイル名で使用する必要がありますC:\$Recycle.Bin\file.txt

  • ファイルの削除に使用すると、lpFileOp が指す SHFILEOPSTRUCT 構造体の fFlags メンバーに FOF_ALLOWUNDO フラグを設定しない限り、SHFileOperation はファイルを完全に削除します。そのフラグを設定すると、ファイルがごみ箱に送られます。ファイルを単純に削除し、ごみ箱に入れないようにする場合は、 DeleteFile を使用します
于 2013-02-04T10:06:47.860 に答える
0

ごみ箱から 1 つのファイルを削除するには、SHGetSpecialFolderLocation(CSIDL_BITBUCKET)またはSHGetKnownFolderIDList(FOLDERID_RecycleBinFolder)を使用してごみ箱の絶対 PIDL を取得し、 を使用SHBindToObject()してそのインターフェイスを取得し、IShellFolderそのメソッドを呼び出しParseDisplayName()て目的のファイル名を相対 PIDL に変換し、 を使用してインターフェイスSHBindToObject()を取得します。IContextMenuファイルに対してそのInvokeCommand()メソッドを呼び出して、ファイルの「削除」動詞を実行します。

于 2013-02-04T11:21:16.147 に答える