2011-04-14 5 views
0

현재 COM 개체와 상호 작용하는 프로젝트에서 작업하고 있습니다. 필자는 다음 코드를 호출한다.사용자 권한 및 COM 개체

 

CoInitialize(NULL); //Initialize COM system 
HRESULT hr = spSSCProt.CreateInstance(("SSCProt.SSCprotector")); 
 

이것은 필자에게 필요한 객체를 가져다 준다. 이것이 실패하면 COM 서버에 regsvr32을 사용하여 등록 된 COM 개체가 없기 때문일 수 있습니다. 모두 괜찮습니다. 다음 코드를 처리 할 수 ​​있습니다.

 

/if its not, lets try to register it ourselves...create the command 
CHAR cmdBuf[BUFSIZE]; 
GetCurrentDirectory(BUFSIZE,cmdBuf); 
string cmd("regsvr32 -s \""); 
cmd += cmdBuf; 
cmd += "\\stixDlls\\SSCProt.dll\""; 

//attempt to register it 
system(cmd.c_str()); 
 

사용자가 관리자가 아닌 경우 문제가 발생합니다. 그들은 COM 서버를 등록하는 코드 섹션을 실행할 수 없습니다. 대부분의 사용자는 관리자가 아닐 것입니다.

관리자가 아닌 경우 com 서버를 등록 할 수있는 방법에 대한 아이디어.

감사

답변

0

가능하면, COM 등록을 할 수있는 가장 좋은 장소는 일반적으로 관리자 권한으로 실행되는 설치 과정 중에있다. 그것이 가능하지 않다면 다른 표준 방법이 있습니다. Vista 및 Win7의 대부분의 가정 사용자에게는 관리자 권한이 있습니다.이 권한은 기본적으로 활성화되어 있지 않습니다. 이러한 권한을 사용하려면 유명한 UAC를 통해 권한 상승을 요청해야합니다.

1

Windows 보호의 요점은 이런 일을하지 못하게하는 것입니다. Windows가 어떤 악성 코드를 설치하려고 시도하는 바이러스가 아니라는 것을 어떻게 알 수 있습니까?

유일한 희망은 매니페스트를 통해 관리자 권한을 요청하는 다른 프로그램을 시작하는 것입니다. 이 시점에서 Windows는 관리자 암호를 묻습니다.