Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 9441|Antwort: 1

[VB] Anonyme Pipeline implementiert CMD-Echo

[Link kopieren]
Veröffentlicht am 06.12.2014 00:05:15 | | |
Ich habe schon einmal einen geschriebenCMD-Echo wird mithilfe anonymer Pipelines implementiertJetzt scheint der Code damals wirklich schwach gewesen zu sein, und ich habe ihn wütend umgeschrieben.


[mw_shl_code=c,true]void ExecuteCommand(WCHAR * pszCommand, WCHAR *pszResult, DWORD dwCount)
{
BOOL bRet = FALSCH;
USES_CONVERSION;

WCHAR szCmdPath[MAX_PATH] = {0};
GetSystemDirectory(szCmdPath, sizeof(szCmdPath));
PathAppend(szCmdPath, L"cmd.exe");

SECURITY_ATTRIBUTES SecurityAttributes;
SecurityAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);
SecurityAttributes.lpSecurityDescrip{filter}tor = NULL;
SecurityAttributes.bInheritHandle = TRUE;

HANDLE hRead = NULL;
HANDLE hWrite = NULL;

if(CreatePipe(&hRead, &hWrite, &SecurityAttributes, 0))
{
STARTUPINFO StartupInfo = {0};
StartupInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
StartupInfo.hStdOutput = hWrite;
StartupInfo.hStdError = hWrite;
StartupInfo.wShowWindow = SW_HIDE;

PROCESS_INFORMATION ProcessInformation = {0};

WCHAR szCurrentPath[MAX_PATH] = {0};
GetCurrentDirectory(sizeof(szCurrentPath), szCurrentPath);

if(CreateProcess(szCmdPath, pszCommand, NULL, NULL, TRUE, 0, NULL, szCurrentPath, &StartupInfo, &ProcessInformation))
{
CloseHandle(hWrite);

char szBuffer[4096] = {0};
DWORD dwRead = 0;
if(pszResult)
{
pszResult[0] = 0;
während (WAHR)
{
memset(szBuffer, 0, sizeof(szBuffer));
bRet = ReadFile(hRead, szBuffer, sizeof(szBuffer), &dwRead, NULL);
wenn((FALSCH == bRet) || (dwRead = 0))
Unterbrechung;

wcscat_s(pszResult, dwCount, A2W(szBuffer));
}
}
}

CloseHandle(hRead);
}
}[/mw_shl_code]




Vorhergehend:Erfassen Sie die Bankkarte über Windows Phone
Nächster:Extrahiere schnell das Bild des QQ-Emotikons eif
Veröffentlicht am 07.12.2014 17:24:30 |
Lesen und Zurückposten ist eine Tugend
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com