6

I've got the following totally reproducible scenario, which I'm unable to understand:

There is a very simple application, which does nothing else than calling CreateObject("Word.Application"), that is creating an instance of MS Word for COM interop. This application is located on a Windows Terminal Server. The test case is to connect via RDP, execute the application and the application will output the time taken for the CreateObject call.

The problem now is that the execution time is significantly longer, if I connect from a specific notebook (HP Spectre): It takes 1,7s (+/- 0.1s).

If I connect from any other machine (notebook or desktop computer), then the execution time is between 0,2-0,4s.

The execution times don't depend on the used RDP account, or screen resolution, or local printers. I even did a fresh install of Windows on that HP notebook to rule out any other side-effects. It doesn't matter if the HP notebook is connected via WLAN or an USB network card. I'm at a loss understanding the 4x to 8x execution time difference to any other machine.

Which reason (component/setting) could explain this big difference in execution time?

Some additional information: I tried debugging the process using an API monitor and could see that >90% of the execution time is actually being spent between a call to RpcSend and RpcReceive. Unfortunately I can't make sense of this information.

MicSim
  • 26,265
  • 16
  • 90
  • 133

2 Answers2

1

It could be the credential management somehow being in the way.

Open the .rdp file with notepad and add

enablecredsspsupport:i:0

This setting determines whether RDP will use the Credential Security Support Provider (CredSSP) for authentication if it is available

Related documentation

https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ff393716%28v%3dws.10%29

Tschallacka
  • 27,901
  • 14
  • 88
  • 133
1

According to your information about RpcSend and RpcReceive time consumption, it could be the case you have some service stopped on your client machine, like DCOM server or some other COM-related (they usually have "COM" or "transaction" in their names).

Some of that services could be started/stopped (if Manually mode selected) by system to/after transfer your request, but there is a time delay to starting service.

I suggest you to open Computer Management - Services or run -> services.msc and compare COM-related services running on your "slow" client and on your "fast" clients, and try to set Automatically running instead Manually or Disabled.

Also, try to run API Monitor on such processes to determine the time-consuming place more precisely.

Arthur Bulakaiev
  • 1,207
  • 8
  • 17