C++ 将.INI文件写入/更新到相对路径,并使用WriteProfileBinary()或WriteProfileInt()从该路径读回

C++ 将.INI文件写入/更新到相对路径,并使用WriteProfileBinary()或WriteProfileInt()从该路径读回,c++,windows,mfc,C++,Windows,Mfc,我已将此遗留代码写入windows目录中的默认位置(使用WriteProfileInt和WriteProfileBinary)。为了使应用程序不需要管理员权限,我想将INI文件写入其他位置 这就是我到目前为止所做的: 处理所有字符串参数(使用WritePrivateProfileString)。然而,我在MSDN中似乎找不到类似的函数来写入接受写入相对路径的整数或二进制。我做了一些类型转换来处理整数参数。但是想知道是否有人有更好的方法/想法来处理整数/二进制参数,您可以这样使用(然后使用GetP

我已将此遗留代码写入windows目录中的默认位置(使用WriteProfileInt和WriteProfileBinary)。为了使应用程序不需要管理员权限,我想将INI文件写入其他位置

这就是我到目前为止所做的:

处理所有字符串参数(使用WritePrivateProfileString)。然而,我在MSDN中似乎找不到类似的函数来写入接受写入相对路径的整数或二进制。我做了一些类型转换来处理整数参数。但是想知道是否有人有更好的方法/想法来处理整数/二进制参数,您可以这样使用(然后使用GetPrivateProfileStruct):

struct S
{
    int i;
    int j;
    S() : i(1), j(2) {}
} Struct;
BOOL b = WritePrivateProfileStruct(
    L"lpszSection",
    L"lpszKey",
    &Struct,
    sizeof Struct,
    L"d:\\test.ini");

没有这样的winapi函数,CWinApp::WriteProfileBinary是一个MFC辅助函数。它将字节转换为字符串,然后使用winapi函数写入该字符串。只需复制代码vc/atlmfc/src/mfc/appui3.cpp。或者干脆别管它了,ini文件非常糟糕。请您是否也知道mfc是否提供了写入相对路径的内容,以便我可以绕过使用这行(CFrameWnd::SaveBarState(sProfile);)写入C:\Windows?您可能需要更改
CWinApp::m_pszProfileName
-有关详细信息,请参阅MSDN: