如何在ATL的*.rgs文件中的代码如下,HKCU
{
    NoRemove Software
    {
        NoRemove Microsoft
        {
            NoRemove 'Internet Explorer'
            {
                NoRemove MenuExt
                {
                    ForceRemove '程序名' = s '%MODULE%\GetTxt.HTML'
                    {
                        
                    }
                }
            }
        }
    }
}想实现GetTxt.html是应用程序目录下的,例如:安装到d:\123,那么在注册表中
ForceRemove '程序名' = s ' d:\123\GetTxt.HTML,我发现使用 MODULE 获得的是dll文件的目录:c:\winnt\system32\*.dll\GetTxt.HTML
我该怎么实现呢?
谢谢!

解决方案 »

  1.   

    %MODULE%是应用程序模块的路径啊。对应调用GetModuleFileName的结果InprocServer32 = s '%MODULE%'
      

  2.   

    我不知道有没有缺省的返回路径的变量,如果没有,只有自定义了。在深入解析atl中的讲述自定义注册脚本变量
      

  3.   

    使用 DllRegisterServer输出函数实现,这个函数在组件注册时被调用。
    比如CRegKey reg;
    HRESULT hr=reg.Open(HKEY_CURRENT,"...");
    if(hr==ERROR_SUCCESS){
    reg.SetValue(...);
    reg.Close();
    }