我想把我的依赖文件放在应用程序目录中。
我记得你可以强制VB6只使用本地目录中的文件。
有什么提示吗?
我想把我的依赖文件放在应用程序目录中。
我记得你可以强制VB6只使用本地目录中的文件。
有什么提示吗?
编辑:
MakeMyManifest被认为是为VB6项目创建清单的自动工具,我自己没有尝试过。 DirectCOM也拥有粉丝,同样我也没有尝试过。
编辑 MMM网站已经关闭。我在这里看到作者在处理他们的托管时遇到了麻烦,并提供了另一个位置来获取Make My Manifest-在此下载。
有一种半自动技术可以生成无需注册的COM清单。您可以使用Visual Studio 2008(可以使用免费版本,例如Visual Basic Express Edition)创建清单。然后手动进行一些编辑,使清单适用于从VB6使用。请参见此MSDN文章的this section部分,以获得逐步说明-忽略其余关于ClickOnce的内容。这可能有点令人困惑,因为每个版本的Windows都会改变规则。旧版本的Windows在当前目录之前搜索路径。
没有清单文件的简单解决方案:
如果您的可执行文件是 A.EXE
,请在相同的目录中添加一个(0字节,空)文件,命名为 A.EXE.local
-- 对于旧版本的Windows,这将把应用程序目录放在搜索顺序中的路径之前。
我自己找到了答案:
Windows首先会查找应用程序目录:
如果启用了SafeDllSearchMode,则搜索顺序如下:如果禁用了SafeDllSearchMode,则搜索顺序如下:
1. 应用程序加载的目录。 2. 当前目录。 3. 系统目录。使用GetSystemDirectory函数获取此目录的路径。 4. 16位系统目录。没有函数可以获取此目录的路径,但会被搜索。 5. Windows目录。使用GetWindowsDirectory函数获取此目录的路径。 6. 列在PATH环境变量中的目录。请注意,这不包括由App Paths注册表键指定的每个应用程序路径。计算DLL搜索路径时不使用App Paths键。
参考: http://msdn.microsoft.com/en-us/library/ms682586.aspx
但是您可以使用清单将其重定向到.dll的搜索位置:
http://msdn.microsoft.com/en-us/library/aa375365(VS.85).aspx