什么是Registry Scripting可以看一下的url, 简单的说就是一个往注册表里面写数据的脚本
int
_tmain(
int
argc, _TCHAR
*
argv[])
{
::CoInitialize(NULL);
//the registry Interface
CComPtr<IRegistrar> spIReg;
HRESULT hr = ::CoCreateInstance(
CLSID_Registrar,
NULL,
CLSCTX_INPROC_SERVER,
IID_IRegistrar,
(void**)&spIReg);
assert(SUCCEEDED(hr));
const DWORD PATH_LENGTH = 1024;
//Get the currently path
LPWSTR currentLocation = new WCHAR[PATH_LENGTH];
::GetCurrentDirectoryW(PATH_LENGTH,currentLocation);
::StrCatW(currentLocation, L"/TestAddin.dll");
//currentDirectory contain a
hr = spIReg->AddReplacement(L"MODULE",currentLocation);
assert(SUCCEEDED(hr));
hr = spIReg->FileRegister(L"ATestAddIn.rgs");
assert(SUCCEEDED(hr));
spIReg.Release();
::CoUninitialize();

delete[] currentLocation;
return 0;
}
http://msdn2.microsoft.com/en-us/library/k32htktc(VS.80).aspx
上面是Registry Scripting的使用,我们如何能够调用Registry Script呢。下面是我的代码,运行当前目录下的一个ATestAddin.rgs的注册脚本文件




























其中主要是用到了com接口IID_IRegistrar
其中AddReplacement是吧registry中的定义的一些(变量用%xxx%表示)替换为某一个字符串