Dll 带有%&引用;在这方面';t寄存器

Dll 带有%&引用;在这方面';t寄存器,dll,root,Dll,Root,当我尝试注册路径中的dll时,说“C:\Users\Administrator\Desktop\Harsh%\Dllfolder\contextmenu.dll”无法使用regsvr32注册。 如果我从路径中删除“%”,它将注册并正常工作 为什么包含“%”的路径不起作用? 有没有办法在这样的路径中注册dll 谢谢, Harsha这是因为%foo%插值环境变量foo的内容。我不知道有什么方法可以避开百分号(因为它什么时候在DOS上的路径名中有效?)。你最好的出价是禁止他们。< / P >抱歉,但它

当我尝试注册路径中的dll时,说“C:\Users\Administrator\Desktop\Harsh%\Dllfolder\contextmenu.dll”无法使用regsvr32注册。 如果我从路径中删除“%”,它将注册并正常工作

为什么包含“%”的路径不起作用? 有没有办法在这样的路径中注册dll

谢谢,
Harsha

这是因为
%foo%
插值环境变量
foo
的内容。我不知道有什么方法可以避开百分号(因为它什么时候在DOS上的路径名中有效?)。你最好的出价是禁止他们。< / P >抱歉,但它与C++有关吗?你如何注册这个DLL?是的,它是一个C++ DLL。我只是使用命令regsvr32 C:\Users\Administrator\Desktop\Harsh%\Dllfolder\contextmenu.dll进行注册。调用regsvr32时是否尝试转义%s?因此,我将路径用引号括起来:
regsvr32“C:\Users\Administrator\Desktop\Harsh%\Dllfolder\contextmenu.dll”
此外,这实际上不是一个编程问题。这里没有代码。您正在调用regsvr32。因此,这个问题属于superuser.com。还有最后一点意见。如果在开发时使用Administrator,则无法检测代码中的标准用户错误。您将依赖您的用户来完成这项工作。或者可能需要以其他方式转义%。我猜shell试图将其视为一个环境变量。也许。事实上,我认为只有在你的道路上有2%的迹象时,这种情况才会发生。有多少?是的,我用了双引号。实际上,我创建了这个上下文菜单dll。我有在.iss文件中注册的代码。当我们的一个测试人员试图将它安装到一个名为“%”的文件夹中时,它崩溃了。当它安装在任何其他文件夹中时,它的寄存器都可以正常工作。出于测试目的,我将dll取出,并从runAm中手动将其注册到外部。很抱歉,但是我发现如果将.net dll放置在这样的文件夹中,并尝试向regasm注册,它就会被注册。但是,为什么它不能用ReVSR32 C++ DLL工作呢?可能是因为工具本身插入了百分数符号。与Unix不同,Windows®中并不是由shell来完成这些工作。