如果我想在Widow上禁用特定的NIC,我通常会这样做:
wmic.exe path win32_networkadapter where "NetConnectionID = 'Local Area Connection 2'" call disable
在提升的权限/以管理员身份运行命令行提示符下...它是有效的,生活是美好的。
所以我编译了这个简单的C++命令行界面应用程序:
#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;
}
我从相同的,提升权限的命令行提示符执行...但我得到的回应是:
C:\elevatesdh\Debug>elevatesdh.exe
Invalid Verb.
怎么回事?
发布于 2015-12-02 02:23:49
我想你得把这行改一下
std::cout << exec("wmic path win32_networkadapter where ""NetConnectionID = 'Local Area Connection 2'"" call disable");
至
std::cout << exec("wmic path win32_networkadapter where \"NetConnectionID = 'Local Area Connection 2'\" call disable");
但我可能大错特错了。
https://stackoverflow.com/questions/34012223
复制相似问题