1.用wmi只能获取得到\\347BBF0D68704E9\root\cimv2:Win32_OperatingSystem.Name="Microsoft Windows XP Professional|C:\\WINDOWS|\\Device\\Harddisk0\\Partition1"
怎么才能得到如下信息
 Microsoft Windows XP 
 Professional  
 版本2002
 service pack32.提取系统用户名的WINDOWS API是哪个函数

解决方案 »

  1.   

    function tform1.getUser():string;//取当前的用户名
    var
    CNameBuffer : PChar;
    fl_loaded : Boolean;
    CLen : ^DWord;
    username :string;
    begin
    GetMem(CNameBuffer,255);
    New(CLen);
    CLen^:= 255;
    fl_loaded := GetUserName(CNameBuffer,CLen^);
    if fl_loaded then
    username := StrPas(CNameBuffer)
    else
    userName := 'UNKOWN';
    FreeMem(CNameBuffer,255);
    //getuser:=USERNAME;
    showmessage(username);
      

  2.   

    GetUserName可以取得登录系统的Windows用户的名字
      

  3.   

    第一个问题在注册表中有的  可以先读取注册表var myreg:Tregistrymyreg:=Tregistry.Create;
      myreg.RootKey:=HKEY_LOCAL_MACHINE;
      if myreg.OpenKey('hardware\descriptionsystem\centralprocessor\0',false) then
      memo1.lines.add(' CPU标识:
      '+myreg.ReadString('VendorIdentifier'));
      myreg.closekey;
      if myreg.openkey('software\microsoft\ windows\currentversion',false) then 
      begin
      memo1.lines.add(' windows版本: '+myreg.ReadString('Version'));
      memo1.lines.add(' 版本号: '+myreg.ReadString('VersionNumber')+' '+myreg.ReadString('Subversionnumber'));
      memo1.lines.add(' 产品标识: '+myreg.Readstring('ProductID'));
      memo1.lines.add('注册单位名称: '+myreg.readstring('RegisteredOrganization'));
      memo1.lines.add(' 注册用户名: '+myreg.readstring('RegisteredOwner'));
      end;
      myreg.CloseKey;
      myreg.Free;
    网上找的  
      

  4.   

    第一个问题,我的方法比较笨你要找的哪些信息是同一类名,遍历子窗口应该全部能找到procedure TForm1.Button1Click(Sender: TObject);
    var
    vHandle: THandle;
    i:integer;
    arr: array[0..254] of Char;
    begin
    WinExec('RunDLL32.exe   Shell32.dll,Control_RunDLL   SysDm.cpl,,0',   SW_hide);
    vhandle:=findwindow('#32770',pchar('系统属性'));
    ShowWindow(vhandle,SW_hide);
    vHandle := FindWindowEx(vHandle, 0, '#32770', nil);
    vHandle := FindWindowEx(vHandle, 0, 'Static', pchar('Microsoft Windows XP'));
    GetWindowText(vHandle, @arr, SizeOf(arr));
    showmessage(arr);
    vhandle:=findwindow('#32770',pchar('系统属性'));
    ShowWindow(vhandle,SW_show);
    end;
      

  5.   

    这个,好像cnpack有个工具包,里面包含了这类系统信息的源码和调用方式
      

  6.   

    我目前只能给你这样的代码
    你试试看吧,不行再提出来,我尽力地给你改,也看看自己到底学d的程度
    function   GetButtonHandle(hwnd:   Integer;   lparam:   Longint):Boolean;   stdcall;
    var
      buffer:   array[0..255]   of   Char;
    begin
      Result   :=   True;
      GetClassName(hwnd,buffer,256);
      if strpas(Buffer)='Static' then
      begin
        GetWindowText(hwnd,buffer,100);
        if buffer<>'' then
        begin
        form1.Memo1.Lines.Add(buffer);
        end;
      end;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
    vHandle: THandle;
    begin
    WinExec('RunDLL32.exe   Shell32.dll,Control_RunDLL   SysDm.cpl,,0',   SW_hide);
    vhandle:=findwindow('#32770',pchar('系统属性'));
    ShowWindow(vhandle,SW_hide);
    vHandle := FindWindowEx(vHandle, 0, '#32770', nil);
     if vHandle <> 0 then
    begin
        EnumChildWindows(vHandle,@GetButtonHandle,Integer(@vHandle));
    vhandle:=findwindow('#32770',pchar('系统属性'));
    sendmessage(vhandle,wm_close,0,0);
    end;
    end;
      

  7.   

    wmic csproduct get vendor,name,identifyingnumber 
    wmic os get caption,servicepackmajorversion 
    wmic cpu get name
      

  8.   


    if myreg.OpenKey('hardware\descriptionsystem\centralprocessor\0',false) then 
    这一行应该修改成:
    if myreg.OpenKey('hardware\description\system\centralprocessor\0',false) then 
      

  9.   

    if myreg.openkey('software\microsoft\ windows\currentversion',false)then 
      begin 
      memo1.lines.add(' windows版本:'+myreg.ReadString('Version')); 
      memo1.lines.add(' 版本号:'+myreg.ReadString('VersionNumber')+''+myreg.ReadString('Subversionnumber')); 
      memo1.lines.add(' 产品标识:'+myreg.Readstring('ProductID')); 
      memo1.lines.add('注册单位名称:'+myreg.readstring('RegisteredOrganization')); 
      memo1.lines.add(' 注册用户名:'+myreg.readstring('RegisteredOwner')); 
      end; 
      myreg.CloseKey; 
      myreg.Free; 这些你们能找到吗?我是找不到?
      

  10.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,registry;type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var myreg:Tregistry;begin
    memo1.Clear;
     myreg:=Tregistry.Create;
    myreg.RootKey:=HKEY_LOCAL_MACHINE;
    if myreg.OpenKey('hardware\description\system\centralprocessor\0',false) then
    memo1.lines.add('CPU型号:'+myreg.ReadString('ProcessorNameString'));
    myreg.closekey;
    if myreg.openkey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\',false) then
    begin
    memo1.lines.add(' windows版本: '+myreg.ReadString('ProductName'));
    memo1.lines.add(' 版本号: '+myreg.ReadString('CSDVersion')+' '+myreg.ReadString('Subversionnumber'));
    memo1.lines.add(' 产品标识: '+myreg.Readstring('ProductID'));
    memo1.lines.add('注册单位名称: '+myreg.readstring('RegisteredOrganization'));
    memo1.lines.add(' 注册用户名: '+myreg.readstring('RegisteredOwner'));
    end;
    myreg.CloseKey;
    myreg.Free;
    end;end.
    除了 Professional  
       版本2002 
    其它的能找到
    应该是“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion