gpt4 book ai didi

Delphi 2009 在 CreateServiceW 上崩溃(仅在 Windows 2008 R2 中)

转载 作者:行者123 更新时间:2023-12-03 15:36:44 29 4
gpt4 key购买 nike

我有以下代码,它可以在除 Windows 2008 R2(SP0 和 SP1)之外的所有操作系统(32 和 64 位)上正常运行

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)在...进程停止”。try/except 围绕 createserviceW 没有任何区别。

连接到远程 64 位计算机时一切正常!

最佳答案

该错误在 Microsoft SBS Server 2011 上也很明显。

您遇到的问题似乎与海拔有关,您没有在具有正确海拔的用户范围内运行应用程序。

您是否尝试过向应用程序添加 list 以确保其正确提升,此外,出于测试目的,您可能希望编译应用程序(调用者)并使用管理员凭据运行。

需要注意的是,Microsoft Windows 2008 和 2011 存在范围限制,即您无法与比您级别更低或更高的进程或服务进行交互。这个安全功能引起了很多头痛。

因此,如果您海拔,请尝试没有海拔。

关于Delphi 2009 在 CreateServiceW 上崩溃(仅在 Windows 2008 R2 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5675466/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com