0

Internet Explorer で使用する MFC ActiveX コントロールを開発しました。このコントロールは、ハード ドライブにファイルを作成します。コントロールを Windows 7 (32 ビット) にインストールしました。管理者として IE を実行すると、コントロールは期待どおりにファイルを作成します。しかし、UAC をオンにして通常のユーザーとして IE を実行すると、コントロールはファイルを作成しません。

以下は、ファイルを作成するコードです。

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プログラムが管理者または通常のユーザーとして実行されている場合、関数は戻ります。プログラムが通常のユーザー用のファイルを作成しないのはなぜですか?

あなたが提供できるどんな助けにも感謝します。

4

1 に答える 1

0

プログラムがファイルを書き込んだフォルダはどれですか? システム ドライバーの「Program Files」などのフォルダーは Windows7 によって保護されており、通常のユーザーが新しいファイルを作成することはできません。

おそらく、Windows7 で保護されていないいくつかのフォルダーにファイルを書き込む必要があります。

于 2012-11-22T13:23:28.230 に答える