我有以下代码,在所有操作系统(32位和64位)上都可以正常运行,但在Windows 2008 R2(SP0和SP1)上无法正常运行。
fSvcMgr := OpenSCManagerW(PwideChar(FOptions.ComputerName), nil,
SC_MANAGER_ALL_ACCESS);
if fSvcMgr = 0 then
begin
iserror := true;
RaiseLastWin32Error;
end;
...
fSvc := OpenServiceW(fSvcMgr, pwidechar(Service_name),SERVICE_ALL_ACCESS);
if fSvc = 0 then
begin
fSvc := CreateServiceW(fSvcMgr,
pwidechar(Service_name),
pwidechar(Service_name),
SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS,
SERVICE_DEMAND_START,
SERVICE_ERROR_IGNORE,
pwidechar(fServiceName), nil, nil, nil, nil, nil);
if fSvc = 0 then
begin
iserror := true;
RaiseLastWin32Error;
end;
end;
当连接到远程32位计算机时会出现以下情况:
在调试 Delphi 时,创建服务(CreateserviceW)行会导致崩溃,并显示消息“应用程序定义的异常(代码 0x000006d1)于... 进程已停止。在 CreateserviceW 周围使用 try/except 并没有任何区别。
当连接到远程64位计算机时,一切正常!