1

以下のコードを使用してレジストリを読み取り、EnableLUAの値を取得しています

LPCTSTR pszSubKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";
LPCTSTR pszValue = "EnableLUA";
DWORD dwType = 0;
DWORD dwValue = 0;
DWORD dwValueSize = sizeof( DWORD );

if ( ERROR_SUCCESS != SHGetValue( HKEY_LOCAL_MACHINE, pszSubKey, pszValue, 
    &dwType, &dwValue, &dwValueSize) )

上記のコードを管理者モードで実行しても、ランタイムエラーが発生します。この仕事を成し遂げるために利用可能な他のAPI。EnableLUAの値が0か1かを簡単に確認したい。mingwを使用していて、LSTATUSがコンパイル時に表示されている

エラー:不明な宣言LSTATUS。

4

1 に答える 1

1

たぶんMingwはWindowsを完全にサポートしていませんか?

LSTATUSはSHGetValueの戻りタイプであるため、定義する必要があります。SHGetValueのプロトタイプについては、Shlwapi.hを参照してください

コードを一時的に変更して、SHGetValueからの戻り値を変数に割り当てて出力することができます。次に、値を教えてください。おそらく5です(アクセスが拒否されました)。

コードにWindows.hShlwapi.hを含めていますか?

MSDNから:

戻り値

タイプ:LSTATUS

成功した場合はERROR_SUCCESSを返し、それ以外の場合はWinerror.hで定義されたゼロ以外のエラーコードを返します。FormatMessage関数をFORMAT_MESSAGE_FROM_SYSTEMフラグとともに使用して、エラーの一般的な説明を取得できます。

于 2012-05-30T14:15:18.730 に答える