我在Delphi 5.0中编写了一个实用程序来使用在客户服务器上运行良好多年的AdsMgKillUser来断开ADS v6.2中的崩溃连接 . 客户最近升级到ADS v9.1和2008 Server:旧的实用程序停止工作 . 更新了Delphi 7,ADS v9.1 TDataSet和ACE的程序 . 使用从AdsMgKillUser帮助主题中逐字逐句复制的代码,针对ADS 10.1服务器进行测试,代码无法断开用户连接(但是在调用AdsMgKillUser时我收到了AE_SUCCESS返回码) . ARC32 v9.1在同一测试中正常工作以断开ADS 10.i用户 .

代码片段:

// program resides on same server as ADS
ulRetVal := ACE.AdsMgConnect( PAnsiChar(appdir), nil, nil, @hMgmtHandle );

if ( ulRetVal <> AE_SUCCESS ) then
begin
    Application.MessageBox( 'Could not connect to server.', 'Connection Error', ID_OK );
    exit;
end;
// strUserConn assigned connection name in format domain\username e.g. "MYSERVER\Fred"
ulRetVal := ACE.AdsMgKillUser( hMgmtHandle, PAnsiChar(strUserOrConn), 0);
if ( ulRetVal <> AE_SUCCESS ) 
then Application.MessageBox( 'User not disconnected.','Error', ID_OK )
else Application.MessageBox( 'User disconnected OK','Information', ID_OK );

我究竟做错了什么?