2591|1

853

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

关于wince RegFlushKey 函数了解 [复制链接]

在wince6.0 随便找个例子看看
BOOL CApplicationPropPage::WriteRegistrySettings()
{
        DEBUGMSG (1, (L"CApplicationPropPage::WriteRegistrySettings() \n"));

        /******************************************************/
        /* Set RDP Connection-specific values to the registry */
        /******************************************************/

        HKEY hKeyConnection;
        TCHAR szPath [s_MAX_PATHLEN] = {0};
       
        StringCchCopy(szPath, s_MAX_PATHLEN, REG_TSC_PATH);
        StringCchCat(szPath, s_MAX_PATHLEN, L"\\");
        StringCchCat(szPath, s_MAX_PATHLEN, m_pConnMgr->m_szConnectionName);

        // Open the specified connection key
        DWORD dwResult = RegOpenKeyEx(HKEY_CURRENT_USER, szPath,
                                                        0, KEY_WRITE, &hKeyConnection);
        if (dwResult != ERROR_SUCCESS)
        {
                LPCTSTR pszErrorTitle = LoadStringEx (IDS_REG_SET_FAILED);
                LPCTSTR pszMsg = LoadStringEx (IDS_REG_SET_FAILED_MESSAGE);
               
                TCHAR szMsg [MAX_DISPLAY_STRING] = {0};
                wsprintf (szMsg, pszMsg, GetLastError());
                MessageBox (szMsg, pszErrorTitle, MB_ICONINFORMATION | MB_OK);
                return FALSE;
        }

        // For the Application page, check to see what the user has selected
        if (m_bDesktop)
        {
                dwResult = RegSetValueEx(hKeyConnection, PROP_STARTPROGRAM, 0, REG_SZ,
                                                                 (BYTE *)(_T("")), (wcslen(_T("")) * sizeof(TCHAR))
                                                                 + sizeof(TCHAR));
                if (dwResult != ERROR_SUCCESS)
                {
                        LPCTSTR pszErrorTitle = LoadStringEx (IDS_REG_SET_FAILED);
                        LPCTSTR pszMsg = LoadStringEx (IDS_REG_SET_FAILED_MESSAGE);
                       
                        TCHAR szMsg [MAX_DISPLAY_STRING] = {0};
                        wsprintf (szMsg, pszMsg, GetLastError());
                        MessageBox (szMsg, pszErrorTitle, MB_ICONINFORMATION | MB_OK);

                        // Close key
                        RegCloseKey(hKeyConnection);

                        return FALSE;
                }
       
                // Delete "Desktop" and "Shell Working Directory" values from the registry
                RegDeleteValue(hKeyConnection, _T("Desktop"));
                RegDeleteValue(hKeyConnection, PROP_WORKDIR);
        }
        else
        {
                DWORD dwDesktop = 2;

                dwResult = RegSetValueEx(hKeyConnection, _T("Desktop"), 0 , REG_DWORD,
                                                             (BYTE *)&dwDesktop, sizeof(DWORD));
                if (dwResult != ERROR_SUCCESS)
                {
                        LPCTSTR pszErrorTitle = LoadStringEx (IDS_REG_SET_FAILED);
                        LPCTSTR pszMsg = LoadStringEx (IDS_REG_SET_FAILED_MESSAGE);
                       
                        TCHAR szMsg [MAX_DISPLAY_STRING] = {0};
                        wsprintf (szMsg, pszMsg, GetLastError());
                        MessageBox (szMsg, pszErrorTitle, MB_ICONINFORMATION | MB_OK);

                        // Close key
                        RegCloseKey(hKeyConnection);

                        return FALSE;
                }

                dwResult = RegSetValueEx(hKeyConnection, PROP_STARTPROGRAM, 0, REG_SZ,
                                                                 (BYTE *)(LPTSTR)m_szAlternateShell,
                                                                 (wcslen((LPTSTR)m_szAlternateShell) * sizeof(TCHAR))
                                                                 + sizeof(TCHAR));
                if (dwResult != ERROR_SUCCESS)
                {
                        LPCTSTR pszErrorTitle = LoadStringEx (IDS_REG_SET_FAILED);
                        LPCTSTR pszMsg = LoadStringEx (IDS_REG_SET_FAILED_MESSAGE);
                       
                        TCHAR szMsg [MAX_DISPLAY_STRING] = {0};
                        wsprintf (szMsg, pszMsg, GetLastError());
                        MessageBox (szMsg, pszErrorTitle, MB_ICONINFORMATION | MB_OK);

                        // Close key
                        RegCloseKey(hKeyConnection);

                        return FALSE;
                }

                dwResult = RegSetValueEx(hKeyConnection, PROP_WORKDIR, 0, REG_SZ,
                                                                 (BYTE *)(LPTSTR)m_szShellWorkingDirectory,
                                                                 (wcslen((LPTSTR)m_szShellWorkingDirectory) * sizeof(TCHAR))
                                                                 + sizeof(TCHAR));
                if (dwResult != ERROR_SUCCESS)
                {
                        LPCTSTR pszErrorTitle = LoadStringEx (IDS_REG_SET_FAILED);
                        LPCTSTR pszMsg = LoadStringEx (IDS_REG_SET_FAILED_MESSAGE);
                       
                        TCHAR szMsg [MAX_DISPLAY_STRING] = {0};
                        StringCchPrintf (szMsg, MAX_DISPLAY_STRING, pszMsg, GetLastError());
                        MessageBox (szMsg, pszErrorTitle, MB_ICONINFORMATION | MB_OK);

                        // Close key
                        RegCloseKey(hKeyConnection);

                        return FALSE;
                }
        }

        // Close key
        RegCloseKey(hKeyConnection);

        /*******************************************************************************/
        // Put up the wait cursor
        HCURSOR hOldCursor = SetCursor (LoadCursor (NULL, IDC_WAIT));

        // Flush the MSTSC key
        HKEY hKeyFlush;

        RegOpenKeyEx(HKEY_CURRENT_USER, REG_TSC_PATH, 0, KEY_WRITE, &hKeyFlush);
        RegFlushKey(hKeyFlush);
        RegCloseKey(hKeyFlush);

        // Flush the registered connections key
        RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGISTRATION_CONNECTIONS_KEY, 0, KEY_WRITE, &hKeyFlush);
        RegFlushKey(hKeyFlush);
        RegCloseKey(hKeyFlush);

        // Remove the wait cursor
        SetCursor (hOldCursor);
        /*******************************************************************************/
       
        return TRUE;
}

点赞 关注
个人签名如果对linux,Android,wince 等嵌入式底层有兴趣的,请加这个QQ群吧,群号:27100460

回复
举报

853

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 

在 RegCloseKey 之前调用。

在MSDN 介绍了这个函数的作用
This function writes all the attributes of the specified open registry key into the registry.
写入注册表。在 RegCloseKey 之前调用。
 
个人签名如果对linux,Android,wince 等嵌入式底层有兴趣的,请加这个QQ群吧,群号:27100460
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表