GetModuleFileName 得到的路径有\??\

 

 

1、

在GINA里调用GetModuleFileName:

 /* 
     * 获取当前程序的全路径 
     */
    memset(imagePath, 0, sizeof(imagePath));
    GetModuleFileName(NULL, imagePath, MAX_PATH);

 

2、本希望得到的路径是 C:\Windows\System32\,没想到得到下面的路径(有\??\)

原因:这是window下的空间原致的,从winobj中我们也可以看到这些:

WinObj是应用开发一个必须具备的工具,如果你是系统管理员担心安全问题,开发人员跟踪对象相关的问题,或只是好奇的对象管理器命名空间

WinObj是一个32位Windows NT程序,使用本机Windows NT的API(由NTDLL.DLL中提供)来访问和显示在NT对象管理器的名称空间的信息。

Winobj可能看起来类似微软SDK的同名的软件,但是从众多的SDK版本,防止显示准确的信息(如它的句柄和引用计数信息是完全打破)有重大错误受到影响。

此外,我们的WinObj了解更多的对象类型。最后,我们WinObj版本具有用户界面增强2.0,知道如何打开设备对象,并会让你查看和更改对象的安全信息,使用本地NT安全性的编辑。

对象管理器是NT对象管理。作为这种责任的一部分,它维护内部命名空间各种操作系统组件,设备驱动程序和Win32程序可以存储和查找对象。新界原生API提供程序,允许用户模式程序浏览命名空间和对象的查询设在那里的地位,但没有证件的接口。

 

 

3、解决方法

我测试过了,如果在system32路径下跑一下平常的应用程序,应用程序中获得的当前路径是没有\??\的,

我猜想与GINA运行在winlogon有关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值