xuyong437 2017-08-16 16:09 采纳率: 0%
浏览 941

关于逻辑路径访问不同路径的方式

各位大牛,我这边在做项目的时候遇到一个问题:

一个软件,想兼容不同的系统这两个系统的注册表路径是不同的,但是代码中要求以一个逻辑路径去表示,如:

a系统,注册表路径为:/SOFTWARE/WcndFn/Ulter
b系统,注册表路径为:/SOFTWARE/Ulter

实际上a、b系统注册表路径就差了一级文件夹,a系统多了一级WcndFn文件夹。但是代码中要求要以一个逻辑路径去访问这两个不同的路径。使用的是windows API函数 RegOpenKeyEx,函数如下:

LONG RegOpenKeyEx(
HKEY hKey, // 需要打开的主键的名称
LPCTSTR lpSubKey, //需要打开的子键的名称
DWORD ulOptions, // 保留,设为0
REGSAM samDesired, // 安全访问标记,也就是权限
PHKEY phkResult // 得到的将要打开键的句柄
)

原本程序只需要在a系统上运行,那么 RegOpenKeyEx 的第二个参数只需要传入 "//SOFTWARE//WcndFn//Ulter" 就可以了,但是现在要求程序要兼容b系统。那原来这种方式就不行了,在b系统上就找不到相应的注册表路径,因为代码中写的是绝对路径,只能访问和a系统注册表一样的路径。

现在想把原来 “//SOFTWARE//WcndFn//Ulter” 这个字符串修改成为一个逻辑路径的表示方式,然后传给 RegOpenKeyEx ,这样在a系统上能找到 /SOFTWARE/WcndFn/Ulter ,并且在b系统上能找到 /SOFTWARE/Ulter 。

应该怎样去构造这个字符串啊或者说怎样构造这样的一个路径,可以兼容这两种情况?要求不让用区分系统的方式来传入不同的路径,只能用一个 逻辑路径或者相对路径。
程序是用C/C++写的,不能用正则表达式啊,系统是windows的两种不同的系统。
求各位大神给一个合理的方案~~~,在网上找不到一个合理的方案。 T_T,谢谢各位大牛了~~

  • 写回答

2条回答 默认 最新

  • threenewbee 2017-08-17 00:28
    关注

    没有这样的api,只能你自己先检测是哪种系统,比如根据某个特征判断,或遍历搜索
    然后再用字符串拼接你的注册表键的路径

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条