【问题标题】:Windows 7: MFC ActiveX control does not create files in any folderWindows 7:MFC ActiveX 控件不在任何文件夹中创建文件
【发布时间】:2012-11-10 21:32:21
【问题描述】:

我开发了一个用于 Internet Explorer 的 MFC ActiveX 控件。此控件在硬盘驱动器上创建文件。我已经在 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。为什么程序不为普通用户创建文件?

非常感谢您提供的任何帮助。

【问题讨论】:

    标签: c++ windows-7 mfc activex uac


    【解决方案1】:

    您的程序在哪个文件夹中写入了文件?系统驱动中的“Program Files”等文件夹受Windows7保护,普通用户不能新建文件。

    也许您应该将文件写入某些不受 Windows7 保护的文件夹。

    【讨论】:

    • 程序以普通用户身份运行时,不会在硬盘上任何分区的任何文件夹中创建文件。
    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多