2009-07-24 7 views
0

IAM mit Regasm.exe, um Tlb-Datei zu generieren und registrieren Sie die Assembly programmatisch. Aber den Pfad von Tlb in .NET Stammverzeichnis selbst. so gehen sie wie folgtWie übergeben Sie den Verzeichnispfad als Befehlszeile für den Prozess?

Puffer c enthält: \ 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)) 

Aber ich denke, es wird nicht vollständigen Pfad nehmen, da dort ein leeres b/W Programm und Files.as erwartet, wenn ich den Befehl ausführen, zeigt es auch nicht zu finden, Eingabe-Assembly c: \ Programm.

normalerweise bei Eingabeaufforderung können wir geben als

RegAsm.exe "c: \ program files \ Test \ test.dll"/codebase/TLB diese fett ich habe als Befehlszeile übergeben, aber Es gibt Double Quptes mit doppelten Anführungszeichen. So wurde ich gedrängt.

Wie kann ich es beheben

+0

Nicht relevant für diese Frage, aber nicht die & si, stattdessen deklarieren STARTUPINFOW si; – sharptooth

+0

HALLO sahrptooth Ich ist den Weg von C bekommen: \ Programme \ Test \ unseren vorhandenen Code als Zeichenfolge verwende jetzt ich die restlichen \ test.dll am anhängen“/ codebase/TLB jetzt macht es so einfach String asemblypath = obj.installationPath() + "\\ test.dll/codebase/tlb" und jetzt muss ich dies als commandline übergeben ich übergebe es einfach als CreateProcessW (buffer, assemblypath, xxxxxxxx); aber ich habe den Fehler kann nicht konvertieren Zeichenfolge an LPWSTR Wie kann ich Zeichenfolge in LPWSTR konvertieren ... können Sie in dieser Hinsicht helpme ... – Cute

Antwort

0

einfach die Dokumentation für die Funktion Createprocess siehe: http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx

Dort heißt es:

lpCommandLine [in, out, optional] Die Unicode-Version dieser Funktion, CreateProcessW, kann den Inhalt dieser Zeichenfolge ändern. Daher kann dieser Parameter kein Zeiger auf Nur-Lese-Speicher sein (z. B. eine Konstante oder eine literale Zeichenfolge). Wenn dieser Parameter eine konstante Zeichenfolge ist, kann die -Funktion einen Zugriff Verletzung verursachen.

Es hat ein Beispiel, wo man eine ausführbare Datei in "Programme" Verzeichnis angibt. . Ich bin nicht so gut in C++. Sonst hätte ein Beispiel gegeben.

1

Sie müssen den Pfad in Anführungszeichen setzen in die Zeichenfolge, die Sie tun können, indem Sie das Anführungszeichen umgehen, indem Sie es mit einem umgekehrten Schrägstrich voranstellen. Also, Ihr zweiter Parameter CreateProcessW wäre:

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

Dies würden Sie die Befehlszeile mit Zitaten, die Sie an der Eingabeaufforderung verwenden würden.

Verwandte Themen