GetModuleFileName 得到的路径有\??\

 

 

1、

在GINA里调用GetModuleFileName:

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

 

2、本希望得到的路径是 C:\Windows\System32\,没想到得到下面的路径(有\??\)
GetModuleFileName 得到的路径有\??\_第1张图片

原因:这是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有关系。

你可能感兴趣的:(GetModuleFileName 得到的路径有\??\)