vs2010 win7 win8 编译时报权限错误

1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(732,5): warning MSB3075: 命令“regsvr32 /s "D:\project\CleanDir\Debug\CleanDir.dll"”已退出,代码为 5。请验证您是否有足够的权限来运行此命令。
1>  上一错误已转换为警告,因为调用任务时指定了 ContinueOnError=true。
1>  继续生成,因为任务“Exec”的“ContinueOnError”设置为“true”。
1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(744,5): error MSB8011: 未能注册输出。请尝试启用“逐用户重定向”,或者使用提升的权限从命令提示符处注册该组件。
1>
1>生成失败。

/

两个解决办法:

第0个:

Solution Explorer ->项目节点->鼠标右键->Properties->Linker ->General->Pre-user Redirection 设为TRUE 就好了。

中文版:

Solution Explorer ->项目节点->鼠标右键->属性->链接器->常规->逐用户重定向

第1个:

// DllRegisterServer - 在系统注册表中添加项。
STDAPI DllRegisterServer(void)
{
// 注册对象、类型库和类型库中的所有接口
ATL::AtlSetPerUserRegistration(true);
HRESULT hr = _AtlModule.DllRegisterServer();
return hr;
}

// DllUnregisterServer - 在系统注册表中移除项。
STDAPI DllUnregisterServer(void)
{
ATL::AtlSetPerUserRegistration(true);
HRESULT hr = _AtlModule.DllUnregisterServer();
return hr;
}

没错,就是这一句:ATL::AtlSetPerUserRegistration(true);

你可能感兴趣的:(风雨兼程,c++,com,shell,regsvr32)