首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编程式系统调用WDCI意外行为(权限提升)

编程式系统调用WDCI意外行为(权限提升)
EN

Stack Overflow用户
提问于 2015-12-01 11:46:02
回答 1查看 46关注 0票数 0

如果我想在Widow上禁用特定的NIC,我通常会这样做:

wmic.exe path win32_networkadapter where "NetConnectionID = 'Local Area Connection 2'" call disable

在提升的权限/以管理员身份运行命令行提示符下...它是有效的,生活是美好的。

所以我编译了这个简单的C++命令行界面应用程序:

代码语言:javascript
运行
复制
#include "stdafx.h"
#include <string>
#include <iostream>
#include <cstdio>
#include <memory>

#ifndef popen
FILE *__cdecl popen(const char *_Command, const char *_Mode) { return _popen(_Command, _Mode); }
#endif

#ifndef pclose
int __cdecl pclose(FILE *_Stream) { return _pclose(_Stream); }
#endif

std::string exec(const char* cmd) {
    std::shared_ptr<FILE> pipe(popen(cmd, "r"), pclose);
    if (!pipe) return "ERROR";
    char buffer[128];
    std::string result = "";
    while (!feof(pipe.get())) {
        if (fgets(buffer, 128, pipe.get()) != NULL) result += buffer;
    }
    return result;
}

int main() {
    std::cout << exec("wmic path win32_networkadapter where ""NetConnectionID = 'Local Area Connection 2'"" call disable");
    return 0;
}

我从相同的,提升权限的命令行提示符执行...但我得到的回应是:

代码语言:javascript
运行
复制
C:\elevatesdh\Debug>elevatesdh.exe
Invalid Verb.

怎么回事?

EN

回答 1

Stack Overflow用户

发布于 2015-12-02 02:23:49

我想你得把这行改一下

代码语言:javascript
运行
复制
std::cout << exec("wmic path win32_networkadapter where ""NetConnectionID = 'Local Area Connection 2'"" call disable");

代码语言:javascript
运行
复制
std::cout << exec("wmic path win32_networkadapter where \"NetConnectionID = 'Local Area Connection 2'\" call disable");

但我可能大错特错了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34012223

复制
相关文章

相似问题

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