INI文件的使用及示例

INI文件的访问
1:Win.ini文件的写入
使用 的WritePrivateProfileString()函数,函数声明是
BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR

lpKeyName,LPCTSTR lpstring);
其中lpAppName表示包含了复制到Win.ini中的段的段名,如果不存在该段,则创建

这个段;lpKeyName包含了一个键的名字,没有该键则创建,如果该参数为NULL,则整

个段,包括段中所有的项都将被删除;lpstring是被写入Win.ini文件的字符串,如果

是NULL,则lpKeyName指定的键都会被删除
2:获取INI文件的数据
DWORD GetPrivateProfilString(LPCTSTR lpAppName,LPCTSTR

lpKeyName,LPCTSTR lpDefault,LPTSTR lpReturnedString,DWORD nSize,LPTSTR

lpFileName)
其中lpAppName表示段(节)名,如果该参数为NULL,函数将复制所有节名导所标志

的缓冲区中
lpKeyName表示键名,如果该参数为NULL,函数将复制lpAppName段下的键名的缓冲

区中
lpDefault表示默认值
lpReturnedString表示用于接收数据的缓冲区;
nSize一字符为单位表示lpReturnedString缓冲区的大小
lpFileName表示文件名称
3:从INI文件获取整型数据
UINT GetPrivateProfileInt(LPCTSTR lpAppName,LPCTSTR lpKeyName,INT

nDefault,LPCTSTR lpFileName)
4:从INI文件获取所有节名(段名)
DWORD GetPrivateProfileSectionNames(LPTSTR lpszReturnBuffer,DWORD

nSize,LPCTSTR lpFileName)
lpszReturnBuffer表示接受节名的缓冲区
nSize缓冲区大小
5:返回指定节下的所有键名和键值
DWORD GetPrivateProfileSection(LPCTSTR lpAppName,LPTSTR

lpReturnedString,DWORD nSize,LPCTSTR lpFileName)
lpAppName表示节名


void CIniDlg::OnWrite()
{
UpdateData(true);
CString jie,jian1,jian2,jian3;

CFileDialog dlg(false);
dlg.m_ofn.lpstrTitle="INI保存为";
dlg.m_ofn.lpstrFilter="ini files(*.ini)\0*.ini\0All files(*.*)\0*.*

\0\0";

CString path;
if(dlg.DoModal()==IDOK)
{
path=dlg.GetPathName();
if(path.Right(4)!=".ini")
path+=".ini";
m_jie.GetWindowText(jie);
m_jian1.GetWindowText(jian1);
m_jian2.GetWindowText(jian2);
m_jian3.GetWindowText(jian3);
WritePrivateProfileString(jie,jian1,m_zhi1,path);
WritePrivateProfileString(jie,jian2,m_zhi2,path);
WritePrivateProfileString(jie,jian3,m_zhi3,path);
}

}

void CIniDlg::OnRead()
{
UpdateData(false);
CFileDialog dlg(true);
dlg.m_ofn.lpstrTitle="读取文件";
dlg.m_ofn.lpstrFilter="ini files(*.ini)\0*.ini\0All files(*.*)\0*.*

\0\0";
CString strPath;
if(dlg.DoModal()==IDOK)
{

strPath = dlg.GetPathName();

//获得文件路径
CString section;

//定义字符串变量
GetPrivateProfileSectionNames(section.GetBuffer

(0),100,strPath);//获取节名
char keys[MAX_PATH]= {0};

//定义一个字符数组
GetPrivateProfileSection

(section,keys,MAX_PATH,strPath);//获取键名和键值
char *cmp = "=";

//定义一个字符指针
int pos = strcspn(keys,cmp);

//查找=在字符串中的位置
char vals[MAX_PATH] = {0};

//定义字符数组
strncpy(vals,keys,pos);

//赋值键名
char* ptmp = keys+pos+1;

//将字符指针指向键值
m_jie.SetWindowText(section);

//设置编辑框节名文本
m_jian1.SetWindowText(vals);

//设置编辑框键名文本
//m_ValOne.SetWindowText(ptmp);
m_zhi1=ptmp;//设置编辑框键值文本
int len = strlen(ptmp);

//获取字符串长度
ptmp +=len+1;

//指向下一个键名
pos = strcspn(ptmp,cmp);

//查找=在字符串中的位置
memset(vals,0,MAX_PATH);

//初始化vals
strncpy(vals,ptmp,pos);

//赋值键名
m_jian2.SetWindowText(vals);

//设置键名文本
ptmp +=pos+1;

//指向键值
//m_ValTwo.SetWindowText(ptmp);
m_zhi2=ptmp;//设置键值编辑框文本
len = strlen(ptmp);

//获取字符串长度
ptmp +=len+1;

//指向下一个键名
pos = strcspn(ptmp,cmp);

//查找=在字符串中的位置
memset(vals,0,MAX_PATH);

//初始化vals
strncpy(vals,ptmp,pos);

//赋值键名
ptmp += pos+1;

//指向键值
m_jian3.SetWindowText(vals);
m_zhi3=ptmp;

//设置编辑框键名文本
//m_ValThree.SetWindowText(ptmp);

//设置编辑框键值文本
}

}



### 关于ArcGIS License Server无法启动的解决方案 当遇到ArcGIS License Server无法启动的情况时,可以从以下几个方面排查并解决问题: #### 1. **检查网络配置** 确保License Server所在的计算机能够被其他客户端正常访问。如果是在局域网环境中部署了ArcGIS Server Local,则需要确认该环境下的网络设置是否允许远程连接AO组件[^1]。 #### 2. **验证服务状态** 检查ArcGIS Server Object Manager (SOM) 的运行情况。通常情况下,在Host SOM机器上需将此服务更改为由本地系统账户登录,并重启相关服务来恢复其正常工作流程[^2]。 #### 3. **审查日志文件** 查看ArcGIS License Manager的日志记录,寻找任何可能指示错误原因的信息。这些日志可以帮助识别具体是什么阻止了许可证服务器的成功初始化。 #### 4. **权限问题** 确认用于启动ArcGIS License Server的服务账号具有足够的权限执行所需操作。这包括但不限于读取/写入特定目录的权利以及与其他必要进程通信的能力。 #### 5. **软件版本兼容性** 保证所使用的ArcGIS产品及其依赖项之间存在良好的版本匹配度。不一致可能会导致意外行为或完全失败激活license server的功能。 #### 示例代码片段:修改服务登录身份 以下是更改Windows服务登录凭据的一个简单PowerShell脚本例子: ```powershell $serviceName = "ArcGISServerObjectManager" $newUsername = ".\LocalSystemUser" # 替换为实际用户名 $newPassword = ConvertTo-SecureString "" -AsPlainText -Force Set-Service -Name $serviceName -StartupType Automatic New-ServiceCredential -ServiceName $serviceName -Account $newUsername -Password $newPassword Restart-Service -Name $serviceName ``` 上述脚本仅作为示范用途,请依据实际情况调整参数值后再实施。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值