2012-11-22 1 views
0

Internet Explorer에서 사용할 MFC ActiveX 컨트롤을 개발했습니다. 이 컨트롤은 하드 드라이브에 파일을 만듭니다. Windows 7 (32 비트)에 컨트롤을 설치했습니다. 관리자로 IE를 실행하면 컨트롤이 예상대로 파일을 만듭니다. 그러나 UAC를 사용하는 일반 사용자로 IE를 실행하면 컨트롤에서 파일을 만들지 않습니다. 프로그램이 관리자 또는 일반 사용자로 실행되는 경우Windows 7 : MFC ActiveX 컨트롤이 어떤 폴더에도 파일을 만들지 못합니다.

int WriteDataToFile() 
{ 
    CString Data; 
    int DataLength; 
    CString FilePath; 
    std::ofstream File; 

    // Set Data, DataLength and FilePath 

    try 
    { 
     File.open(FilePath, std::ios::binary | std::ios::out); 

     if (TRUE == File.fail()) 
     { 
      return ERROR; 
     } 

     File.write((const char *)Data.GetBuffer(), DataLength); 

     if (TRUE == File.bad()) 
     { 
      File.close(); 

      return ERROR; 
     } 

     File.close(); 
    } 
    catch (...) 
    { 
     return ERROR; 
    } 

    return SUCCESS; 
} 

기능이 SUCCESS를 반환 아래

파일을 생성하는 코드입니다. 프로그램이 일반 사용자 용 파일을 생성하지 않는 이유는 무엇입니까?

제공 할 수있는 도움에 감사드립니다.

답변

0

프로그램에서 파일을 작성한 폴더는 무엇입니까? 시스템 드라이버의 '프로그램 파일'과 같은 폴더는 Windows7에 의해 보호되며 일반 사용자를위한 새 파일을 만들 수 없습니다.

어쩌면 당신은 Windows7에 의해 보호되지 않는 일부 폴더에 파일을 작성해야합니다.

+0

일반 사용자로 실행할 때 하드 디스크의 파티션에있는 폴더에 파일을 만들지 않습니다. – geekowl