如何用DELPHI编程读取MYSQL的安装路径
比方说
MYSQL4.0  路径是:
C:\Program Files\MySQL\MySQL AB\MySQL Server 4.1\bin
MYSQL5.0  路径是:
C:\Program Files\MySQL\MySQL Server 5.0\bin当然还有一种不“确定”的情况
就是用户在安装MYSQL安装时“自定义”的路径

解决方案 »

  1.   

    注册表HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB\MySQL Server 5.0
      

  2.   

    这个我也查找到了,我的意思在不确定系统中到底安装了“什么版本的MYSQL”时,
    或者用户在安装MYSQL自定义了路径时,如何获取这个MYSQL的路径
    就是这个Bin的所在位置呀
      

  3.   

    这个路径应该在注册表有记录的.具体在哪里不知道 每弄过
    如果是一个绿色软件 就真的放哪里都不知道了.开个多线程 土办法慢慢找文件名吧MYSQL 应该有执行, 可以通过进程快照取他的文件路径
      

  4.   

    开个多线程 土办法慢慢找文件名吧
    -------------------------------
    这方法也太土了吧?还不如获取进程列表,然后看进程mysqld-nt.exe的位置。
      

  5.   

    获取进程列表,然后看进程mysqld-nt.exe的位置
    这是个方法,用DELPHI编程如何获取进程表,
    并再获取进程mysqld-nt.exe的所在位置呀???
      

  6.   

    方法应该有不少的……1、如#6楼说的,用TlHelp32的CreateToolHelp32SnapShot、Process32First、Process32Next等来匹配进程名称,进而获取进程的全路径。转载用CreateToolHelp32Snapshot 查看进程及其模块列表
    2、也可以使用WinSvc的OpenSCManager、EnumServicesStatus等来枚举系统服务列表。转载枚举NT系统服务
      

  7.   

    我现在问题是不知如何将进程中的这个mysqld-nt.exe读取,
    并获取这个mysqld-nt.exe所在文件夹呀,还请赐教
      

  8.   

    小鸟也懒了!unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, TLHelp32, PsApi;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}function GetProcessPath(ProcessID: DWORD): string;
    var
            mHandle: THandle;
            ModName: Array[0..Max_Path-1] of Char;
            hMod: HModule;
            n: DWORD;
    begin
            Result:='';        mHandle:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
                    False,
                    ProcessID);
            if mHandle>0 then
                    try
                            //uses PsAPI
                            ENumProcessModules(mHandle,@hMod,Sizeof(hMod),n);
                            if GetModuleFileNameEx(mHandle,hMod,ModName,Sizeof(ModName))>0 then
                                    Result:=ModName;
                    except
                    end;
    end;function GetPath(AFileName: string): string;
    const
            PROCESS_TERMINATE = $0001;
    var
            ContinueLoop: BOOL;
            FSnapShotHandle: THandle;
            FProcessEntry32: TProcessEntry32;
    begin
            //uses TLHelp32
            result := '';
            FSnapShotHandle := CreateToolhelp32SnapShot(TH32CS_SNAPPROCESS, 0);
            FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
            ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
            while integer(ContinueLoop) <> 0 do
            begin
                    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(AFileName))
                            or (UpperCase(FProcessEntry32.szExeFile ) = UpperCase(AFileName))) then
                    begin
                            result := GetProcessPath(FProcessEntry32.th32ProcessID);
                            break;
                    end;
                    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
            end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
            showmessage(GetPath('svchost.exe'));
    end;end.
      

  9.   

    感谢赐教erhan
    终于可以分享出这个小程序了如图:下载地址‘正在上传中......’
      

  10.   

    上传成功http://download.csdn.net/detail/sgzhou12345/4089285