如何用DELPHI编程读取MYSQL的安装路径
如何用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安装时“自定义”的路径
[解决办法]
注册表HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB\MySQL Server 5.0
[解决办法]
这个路径应该在注册表有记录的.具体在哪里不知道 每弄过
如果是一个绿色软件 就真的放哪里都不知道了.
开个多线程 土办法慢慢找文件名吧
MYSQL 应该有执行, 可以通过进程快照取他的文件路径
[解决办法]
开个多线程 土办法慢慢找文件名吧
-------------------------------
这方法也太土了吧?
还不如获取进程列表,然后看进程mysqld-nt.exe的位置。
[解决办法]
必须承认,论坛这种交流模式把很多人害了,变得懒惰。
[解决办法]
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.
[解决办法]
不但懒,还很抠,加分!!!!!!!!!!!!!!!
------解决方案--------------------