How do I locate the address of a system function without needing a signature?

For a UAC bypass project, it uses signatures to locate a specific function, but the problem is that these signatures must be hard coded and change between windows builds.

Here is a new snippet of code that is meant to do the same function without the need for a signature.

std::wcout << GetProcAddress(GetModuleHandle(L"SystemSettings.Handlers.dll"), "!SetUserAssoc@@@@") << std::endl;

This code works with some normal example functions it seems but not this specific one(returns address of just zeros), what am I doing wrong and what would be a good solution to this problem?