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 的返回类型,所以应该定义。在Shlwapi.h中查找 SHGetValue 的原型。

您可能可以暂时更改代码以将 SHGetValue 的返回值分配给变量并将其打印出来。然后告诉我们价值是什么。可能是 5(拒绝访问)。

您是否在代码中包含Windows.hShlwapi.h

来自 MSDN:

返回值

类型:LSTATUS

如果成功则返回 ERROR_SUCCESS,否则返回 Winerror.h 中定义的非零错误代码。您可以使用带有 FORMAT_MESSAGE_FROM_SYSTEM 标志的 FormatMessage 函数来检索错误的一般描述。

于 2012-05-30T14:15:18.730 回答