进程外服务器为长文件名,注册的时候变成了8.3格式,导致和appid中记录的长文件名不匹配,以至dcomcnfg给appid设置的访问许可被旁路,原因是
atl中如下代码
TCHAR szModule[_MAX_PATH];
GetModuleFileName(pM->m_hInst, szModule, _MAX_PATH);
// Convert to short path to work around bug in NT4's CreateProcess
TCHAR szModuleShort[_MAX_PATH];
GetShortPathName(szModule, szModuleShort, _MAX_PATH);
LPOLESTR pszModule = T2OLE(szModuleShort);
解决的办法是将appid中的文件名变成8.3格式的,在注册脚本中