Я разработал элемент управления MFC ActiveX для использования в Internet Explorer. Этот элемент управления создает файлы на жестком диске. Я установил элемент управления в Windows 7 (32-разрядная версия). Если я запускаю IE как администратор, элемент управления создает файлы, как и ожидалось. Но если я запускаю IE как обычный пользователь с включенным UAC, элемент управления не создает никаких файлов.
Ниже приведен код для создания файла:
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
если программа запускается от имени администратора или обычного пользователя. Почему программа не создает файлы для обычного пользователя?
Большое спасибо за любую помощь, которую вы можете оказать.
В какую папку ваша программа записала файл? Папки, такие как «Program Files» в системном драйвере, защищены Windows7, не разрешается создавать новые файлы для обычных пользователей.
Возможно, вам следует записать свои файлы в некоторые папки, не защищенные Windows7.
Других решений пока нет …