iam使用regasm.exe生成tlb文件并以编程方式注册程序集。但是.NET根目录本身的tlb路径。所以这样做
缓冲区包含c:\ windows \ Microsoft.Net \ framework \ v2.0.57 \ RegAsm.exe
if(!CreateProcessW(buffer,L" C:\\Program Files\\Test\\Test.dll /codebase /tlb /silent" ,NULL, NULL,FALSE, 0,NULL,NULL,(LPSTARTUPINFOW)&si,&pi ) )
但我认为它不会采取完整的路径,因为有一个空白的黑白程序和Files.as预计当我运行命令时它也显示无法找到输入程序集c:\ program。
通常在命令提示符下我们可以给出
RegAsm.exe “c:\ program files \ Test \ test.dll”/ codebase / tlb 这个粗体字符我必须作为命令行传递,但它有双引号的Double quptes。所以我受到了打击。
我该如何解决?
答案 0 :(得分:1)
您需要在字符串中的引号中包含路径,您可以通过在引号字符前面加上反斜杠来转义它。因此,您对CreateProcessW的第二个参数是:
L"\"C:\Program Files\Test\Test.dll\" /codebase /tlb /silent"
这将为您提供在命令提示符处使用引号的命令行。
答案 1 :(得分:0)
只需查看CreateProcess功能的文档:http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx
它说:
lpCommandLine [in,out,optional] 这个函数的Unicode版本, CreateProcessW,可以修改 这个字符串的内容。因此, 此参数不能是指针 只读内存(例如const 变量或文字字符串)。如果这 参数是一个常量字符串, 功能可能会导致访问 冲突。
它有一个例子,其中一个指定“Program Files”目录中的可执行文件。 。 我在C ++中表现不佳。其他人会举一个例子。