首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ShellExecute中的命令

ShellExecute中的命令
EN

Stack Overflow用户
提问于 2018-01-25 15:07:49
回答 2查看 8.6K关注 0票数 3

我正在尝试从elevated(has admin privileage) c++ applicationcommand prompt中执行netsh winsock reset catalog命令。

代码语言:javascript
复制
HINSTANCE retVal = ShellExecute(NULL, "open", "cmd", "\c netsh winsock reset catalog > CUninstall.log", NULL, SW_NORMAL); 

它只是打开命令提示符,不会发生任何其他事情。我试过了

代码语言:javascript
复制
HINSTANCE retVal = ShellExecute(NULL, "runas", "cmd", "\c netsh winsock reset catalog > CUninstall.log", NULL, SW_NORMAL); 

代码语言:javascript
复制
HINSTANCE retVal = ShellExecute(NULL, "open", "cmd", " netsh winsock reset catalog > CUninstall.log", NULL, SW_NORMAL); 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-25 17:34:02

开关字符导致了问题。当开关字符从\c更改为/c时,它会起作用。

表格

代码语言:javascript
复制
HINSTANCE retVal = ShellExecute(NULL, "open", "cmd", "\c netsh winsock reset catalog > CUninstall.log", NULL, SW_NORMAL);

代码语言:javascript
复制
HINSTANCE retVal = ShellExecute(NULL, "open", "cmd", "/c netsh winsock reset catalog > CUninstall.log", NULL, SW_NORMAL);
票数 2
EN

Stack Overflow用户

发布于 2019-08-01 22:09:43

为了找到最优的方法,我进行了一些试验和错误,所以我想分享一下my solution。把我使用异步调用的建议放在一边,下面是我的DoRun()函数:

代码语言:javascript
复制
BOOL DoRun(WCHAR *command)
{
    BOOL Result = FALSE;
    DWORD retSize;
    LPTSTR pTemp = NULL;
    TCHAR Command[BUFSIZE] = L"";
    if (!(DeleteFile(RESULTS_FILE)))
    {
        //return L"Can't delete previous results";
    }
    _tcscpy_s(Command, L"/C ");
    _tcscat_s(Command, command);
    _tcscat_s(Command, L" >");
    _tcscat_s(Command, RESULTS_FILE);
    wprintf(L"Calling:\n%s\n", Command);
    Result = (BOOL) ShellExecute(GetActiveWindow(), L"OPEN", L"cmd", Command, NULL, 0L);
    if(!Result)
    {
        retSize = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
            FORMAT_MESSAGE_FROM_SYSTEM |
            FORMAT_MESSAGE_ARGUMENT_ARRAY,
            NULL,
            GetLastError(),
            LANG_NEUTRAL,
            (LPTSTR)&pTemp,
            0,
            NULL);
        MessageBox(NULL,pTemp,L"Error",MB_OK);
    }
    return Result;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48437377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档