1. 程式人生 > >vs2010 win7 win8 編譯時報許可權錯誤

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);