如何将目录路径作为进程的命令行传递?

时间:2009-07-24 12:24:32

标签: c++ visual-c++

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。所以我受到了打击。

我该如何解决?

2 个答案:

答案 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 ++中表现不佳。其他人会举一个例子。