2009-07-24 73 views
0

iam使用regasm.exe生成tlb文件並以編程方式註冊程序集。但是在.NET根目錄本身中的tlb路徑。所以做這樣的如何將目錄路徑作爲命令行傳遞給進程?

緩衝區包含C:\ WINDOWS \ Microsoft.Net \框架\ 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)) 

但我認爲既然有坯料B,它不會採取全路徑/ w程序和Files.as預計當我運行命令時,它也顯示無法找到輸入程序集c:\ program。

通常在命令提示符下,我們可以給作爲

RegAsm.exe 「C:\ Program Files文件\測試\ Test.dll的」/代碼庫/ TLB 這個大膽角色我必須通過爲命令行,但它有雙引號雙引號。所以我被擊中了。

我該如何解決

+0

與此問題無關,但不要投射&si,而是聲明STARTUPINFOW si; – sharptooth 2009-07-27 09:21:16

+0

HI sahrptooth 我正在使用我們現有的代碼作爲字符串獲取C:\ Program Files \ Test \的路徑現在我正在追加剩餘的\ test.dll「/ codebase/tlb現在使其成爲簡單 string asemblypath = obj.installationPath()+「\\ test.dll/codebase/tlb」 現在我必須通過這個命令行我只是通過它作爲 CreateProcessW(緩衝區,程序集路徑,xxxxxxxx); 但我得到的錯誤無法轉換字符串到LPWSTR 我怎樣才能將字符串轉換爲LPWSTR ...可以幫助我在這方面... – Cute 2009-07-29 07:35:11

回答

0

只是看到了CreateProcess函數的文檔:http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx

它說:

lpCommandLine [IN,OUT可選參數] 的Unicode的這個版本功能, CreateProcessW,可以修改 這個字符串的內容。因此, 此參數不能是指向 只讀存儲器的指針(例如const 變量或文字字符串)。如果此參數是一個常量字符串,則 函數可能會導致訪問 違規。

它有一個例子,在「程序文件」目錄中指定一個可執行文件。 。 我在C++中不太好。否則會舉一個例子。

1

你需要在的引號內加上引號這個字符串,你可以通過在引號前面加一個反斜槓來轉義引號。所以,你要CreateProcessW第二個參數是:

L"\"C:\Program Files\Test\Test.dll\" /codebase /tlb /silent" 

這將使你,你會在命令提示符下使用引號的命令行。

相關問題