本文整理汇总了C++中atl::CRegKey::QueryDWORDValue方法的典型用法代码示例。如果您正苦于以下问题:C++ CRegKey::QueryDWORDValue方法的具体用法?C++ CRegKey::QueryDWORDValue怎么用?C++ CRegKey::QueryDWORDValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类atl::CRegKey
的用法示例。
在下文中一共展示了CRegKey::QueryDWORDValue方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadMessageFilter
/// Loads a list of message IDs that should be passed on to the AOIA application
void LoadMessageFilter(HKEY hKeyParent, LPCTSTR lpszKeyName)
{
g_messageFilter.empty();
ATL::CRegKey reg;
if (reg.Open(hKeyParent, lpszKeyName, KEY_READ) == ERROR_SUCCESS)
{
TCHAR subkey[256];
DWORD skLength = 256;
DWORD dw;
int index = 0;
while (true)
{
if (reg.EnumKey(index, subkey, &skLength) == ERROR_SUCCESS)
{
index++;
if (reg.QueryDWORDValue(subkey, dw) == ERROR_SUCCESS)
{
g_messageFilter.insert(dw);
}
}
else
{
break;
}
}
}
else
{
LOG("Unable to open key: " << lpszKeyName)
}
}
示例2: TodayNotDo
BOOL AddinHelper::TodayNotDo(const wchar_t* szValueName)
{
DWORD dwLastUTC = 0;
BOOL bCando = FALSE;
ATL::CRegKey key;
if (key.Open(HKEY_CURRENT_USER, REGEDITPATH) == ERROR_SUCCESS) {
bCando = TRUE;
if(key.QueryDWORDValue(szValueName, dwLastUTC) == ERROR_SUCCESS) {
__time64_t tTime = (__time64_t)dwLastUTC;
tm* pTm = _localtime64(&tTime);
LONG nLastDay = pTm->tm_mday;
LONG nLastMonth = pTm->tm_mon;
LONG nLastYear = pTm->tm_year;
__time64_t lCurTime;
_time64( &lCurTime);
tm* pTmc = _localtime64(&lCurTime);
LONG nCurDay = pTmc->tm_mday;
LONG nCurMonth = pTmc->tm_mon;
LONG nCurYear = pTmc->tm_year;
TSDEBUG4CXX("TodayHasDo check time pTmc = "<<nCurYear<<nCurMonth<<nCurDay<<", pTm = "<<nLastYear<<nLastMonth<<nLastDay);
if (nCurDay == nLastDay && nCurMonth == nLastMonth && nCurYear == nLastYear){
bCando = FALSE;
}
else{
bCando = TRUE;
}
}
key.Close();
}
return bCando;
}
示例3: QueryRegVal
RegData AddinHelper::QueryRegVal(HKEY hkey, LPCTSTR lpszKeyName, LPCTSTR lpszValuename, REGSAM flag)
{
ATL::CRegKey key;
HRESULT hr;
RegData rd;
if ((hr = key.Open(hkey, lpszKeyName, flag)) == ERROR_SUCCESS) {
TCHAR tszValue[MAX_PATH] = {0};
ULONG lLen = MAX_PATH;
DWORD dwInfo;
if (key.QueryStringValue(lpszValuename, tszValue, &lLen) == ERROR_SUCCESS){
std::wstring wstrInfo = tszValue;
rd.strData = wstrInfo;
}
else if((key.QueryDWORDValue(lpszValuename, dwInfo) == ERROR_SUCCESS)){
rd.dwData = dwInfo;
}
key.Close();
}
return rd;
}
示例4: GetIntervalTime
DWORD AddinHelper::GetIntervalTime() const
{
TSAUTO();
DWORD dwResult = 3600;
std::wstring subKey = L"Software\\";
subKey += this->m_productName;
subKey += L"Host";
if (this->m_isService) {
DWORD dwSessionId = ::WTSGetActiveConsoleSessionId();
HANDLE hUserToken = NULL;
if(!::WTSQueryUserToken(dwSessionId, &hUserToken)) {
TSERROR4CXX("WTSQueryUserToken fail. Error: " << ::GetLastError());
return dwResult;
}
ScopeResourceHandle<HANDLE, BOOL (WINAPI*)(HANDLE)> autoCloseUserToken(hUserToken, ::CloseHandle);
TOKEN_ELEVATION_TYPE tokenElevationType;
DWORD dwSize = sizeof(TOKEN_ELEVATION_TYPE);
if(!::GetTokenInformation(hUserToken, TokenElevationType, &tokenElevationType, dwSize, &dwSize)) {
TSERROR4CXX("GetTokenInformation TokenElevationType fail." << ::GetLastError());
return dwResult;
}
HANDLE hDuplicateToken = NULL;
if(tokenElevationType == TokenElevationTypeLimited) {
TOKEN_LINKED_TOKEN linkedToken;
dwSize = sizeof(TOKEN_LINKED_TOKEN);
if (!::GetTokenInformation(hUserToken, TokenLinkedToken, &linkedToken, dwSize, &dwSize)) {
TSERROR4CXX("GetTokenInformation TokenLinkedToken fail. Error: " << ::GetLastError());
return dwResult;
}
ScopeResourceHandle<HANDLE, BOOL (WINAPI*)(HANDLE)> autoCloseLinkedToken(linkedToken.LinkedToken, ::CloseHandle);
if(!::DuplicateTokenEx(linkedToken.LinkedToken, MAXIMUM_ALLOWED, NULL, SecurityImpersonation, TokenPrimary, &hDuplicateToken)) {
TSERROR4CXX("DuplicateTokenEx fail. Error: " << ::GetLastError());
return dwResult;
}
}
else {
if(!::DuplicateTokenEx(hUserToken, MAXIMUM_ALLOWED, NULL, SecurityImpersonation, TokenPrimary, &hDuplicateToken)) {
TSERROR4CXX("DuplicateTokenEx fail. Error: " << ::GetLastError());
return dwResult;
}
}
ScopeResourceHandle<HANDLE, BOOL (WINAPI*)(HANDLE)> autoCloseDuplicateToken(hDuplicateToken, ::CloseHandle);
TCHAR szUsername[MAX_PATH];
DWORD dwUsernameLen = MAX_PATH;
PROFILEINFO pi;
std::memset(&pi, 0, sizeof(PROFILEINFO));
pi.dwSize = sizeof(PROFILEINFO);
if(!ImpersonateLoggedOnUser(hDuplicateToken)) {
TSERROR4CXX("ImpersonateLoggedOnUser failed.");
return dwResult;
}
DWORD dwUserNameLength = MAX_PATH;
if(!::GetUserName(szUsername, &dwUserNameLength)) {
TSERROR4CXX("GetUserName failed.");
::RevertToSelf();
return dwResult;
}
::RevertToSelf();
pi.lpUserName = szUsername;
pi.dwFlags = 1;
if(!::LoadUserProfile(hDuplicateToken, &pi)) {
TSERROR4CXX("LoadUserProfile failed.");
return dwResult;
}
do {
ATL::CRegKey key;
if (key.Open((HKEY)pi.hProfile, subKey.c_str()) != ERROR_SUCCESS) {
break;
}
DWORD dwInterval = 0;
if(key.QueryDWORDValue(L"interval", dwInterval)!= ERROR_SUCCESS) {
break;
}
dwResult = dwInterval;
} while(false);
::UnloadUserProfile(hDuplicateToken, pi.hProfile);
}
else {
ATL::CRegKey key;
TSERROR4CXX("GetIntervalTime subKey: " << subKey.c_str());
if(key.Open(HKEY_CURRENT_USER, subKey.c_str()) != ERROR_SUCCESS) {
return dwResult;
}
DWORD dwInterval = 0;
if(key.QueryDWORDValue(L"interval", dwInterval)!= ERROR_SUCCESS) {
return dwResult;
}
dwResult = dwInterval;
TSERROR4CXX("GetIntervalTime dwInterval: " << dwInterval);
}
if (dwResult < 600) {
dwResult = 600;
}
return dwResult;
}
示例5: LaunchExe
void AddinHelper::LaunchExe()
{
TSDEBUG4CXX("LaunchExe , enter Now = "<<::GetTickCount());
BOOL bFirst = TodayNotDo();
if (bFirst){
SendState::Send("explorerplugin_startup", "explorerplugin");
}
else{
SendState::Send("explorerplugin_timer", "explorerplugin");
}
//判断地域标志
DWORD dwLastUTC = 0;
DWORD dwZoneAllow = 0;
BOOL bCando = FALSE;
ATL::CRegKey key;
if (!bFirst && key.Open(HKEY_CURRENT_USER, REGEDITPATH) == ERROR_SUCCESS) {
bCando = TRUE;
if (key.QueryDWORDValue(ZONESWITCH, dwZoneAllow) != ERROR_SUCCESS || dwZoneAllow != 1){
bCando = FALSE;
}
else if(key.QueryDWORDValue(LASTLAUNCHUTC, dwLastUTC) == ERROR_SUCCESS) {
__time64_t tTime = (__time64_t)dwLastUTC;
tm* pTm = _localtime64(&tTime);
LONG nLastDay = pTm->tm_mday;
LONG nLastMonth = pTm->tm_mon;
LONG nLastYear = pTm->tm_year;
__time64_t lCurTime;
_time64( &lCurTime);
tm* pTmc = _localtime64(&lCurTime);
LONG nCurDay = pTmc->tm_mday;
LONG nCurMonth = pTmc->tm_mon;
LONG nCurYear = pTmc->tm_year;
TSDEBUG4CXX("check time pTmc = "<<nCurYear<<nCurMonth<<nCurDay<<", pTm = "<<nLastYear<<nLastMonth<<nLastDay);
if (nCurDay == nLastDay && nCurMonth == nLastMonth && nCurYear == nLastYear){
bCando = FALSE;
}
else{
bCando = TRUE;
}
}
key.Close();
}
TSDEBUG4CXX("LaunchExe , bCando = "<<bCando);
if (!bFirst && !bCando){
return;
}
if (!bFirst && IsStartUp()){
return;
}
RegData rd = QueryRegVal(HKEY_LOCAL_MACHINE, REGEDITPATH, _T("Path"), KEY_READ | KEY_WOW64_32KEY);
TSDEBUG4CXX("LaunchExe rd.strData = "<<rd.strData.c_str());
if (rd.strData == L"" || !PathFileExists(rd.strData.c_str())){
return;
}
TCHAR* tszProName = PathFindFileName(rd.strData.c_str());
if (!bFirst && QueryProcessExist(tszProName)){
TSDEBUG4CXX("LaunchExe process exist "<<tszProName);
return;
}
SHELLEXECUTEINFO sei;
std::memset(&sei, 0, sizeof(SHELLEXECUTEINFO));
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.lpFile = rd.strData.c_str();
sei.lpParameters = L"/sstartfrom explorerplugin /embedding";
sei.nShow = SW_SHOWNORMAL;
ShellExecuteEx(&sei);
TSDEBUG4CXX("LaunchExe rd.strData.c_str() = "<<rd.strData.c_str());
if (bFirst){
ATL::CRegKey key;
if (key.Open(HKEY_CURRENT_USER, REGEDITPATH) == ERROR_SUCCESS) {
__time64_t lCurTime;
_time64( &lCurTime);
key.SetDWORDValue(L"pluginlastutc", lCurTime);
key.Close();
}
}
}