在自己的应用程序中运行命令提示符

时间:2015-10-16 06:06:22

标签: c windows command-prompt

有没有办法在C应用程序中运行命令提示符命令?我想使用wmic diskdrive get serialnumber命令检查硬盘驱动器的制造商序列号。

3 个答案:

答案 0 :(得分:2)

有许多功能允许您从C调用外部程序,其中一些"standard",其中一些是specific to Windows

但是在你的场景中,我建议你使用Windows提供的WMI API,你可以在stackoverflow上找到这方面的例子:

How to obtain data from WMI using a C Application? how to run a wmi query in c

我没有提供示例,而是与SO上现有的答案相关联,因为我认为复制已有的答案是有意义的。

答案 1 :(得分:0)

您可以尝试使用popen: -

#include<stdio.h>
#include<string.h>

int main()
{
   char c;
   FILE *file = popen("wmic diskdrive get serialnumber", "r");
   if (file) {
     while ((c = getc(file)) != EOF)
        putchar(c);
    fclose(file);
   }
   return 0;
}

由于这是一个文件对象,您现在可以根据需要轻松将其写入文件,并随意检索它。

答案 2 :(得分:-1)

是的,你可以。然而,这被认为是不好的做法,因为它会使您的应用程序不必要地依赖于平台并产生开销。

喜欢这样

#include <stdio.h>
#include <string.h>
void main ()
{
    system("wmic diskdrive get serialnumber");
}

详细了解here 关于输出(引自上面的链接):

  

错误时返回的值为-1,并且返回的状态为   否则命令。

您还可以使用ReadConsoleOutputCharacter函数(链接到msdn引用入站)来读取控制台输出。

在尝试使用命令提示符获取此类数据之前,请考虑使用API​​或任何其他方法来检索数据,因为通过调用命令提示符,您将为应用程序添加荒谬的开销,这是不必要的。