Yes you can, but it is a little more complicated. I unfortunately do not have the time to write the code, but I will briefly explain the "process".
The probable error in your code is that you did not form the "or" statement correctly. It needs to be:
if CustomerID = 998976
or CustomerID = 887889
//or CustomerID = <next ID here>
then
ValidUser = 1;
Code this into a FUNCTION.
I suggest you name your "working function" with a _O (say for Open)
then create a copy with a _P (say for Protected)
You want to do this, because in a second you will incapacitate the original, and you don't want to have to enter in the whole list again later.
Export the _P version of the code as a EasyLanguage protected file. (to a known file folder location)
Immediately import it back in. TradeStation will ask you if you want to overwrite the non-protected version -- answer Yes. If you do this correctly, the Code Editor will then show that the _P version is now protected, if you still have it open.
In your EZL study (Indicator, ShowMe, PaintBar, Strategy, etc.), check for a Valid User.
I like to use the "Once" syntax, so it does not need to be evaluated constantly.
In your variables, set ValidUser(0), then when the function passes in "1", you know that you have a valid user. Use an IF-THEN statement to check for ValidUser = 1. If ValidUser is still zero, then call a RaiseRuntimeError. This halts the study and it will not run, and puts an error message up that the user can see.
Note: Using this method, obviously ALL ValidUsers have access to all studies coded in this manner. So additional thought would be required if you need to restrict access, by possibly grouping studies and using different functions with unique ValidUser lists.
Many programmers combine the ValidUser check with an expiration date to time-out and halt operation of the study after a certain period of time (i.e. month, half-year, year, etc.).
Hope this helps.