In DSS, you can have multiple resource domains within a cell and this will most likely be typical of your network's topography. In order to maintain compatibility with your existing applications and still provide access to the full range of tools available in DSS, several API categories introduced scoping rules. These APIs are:
The first parameter (pszServername) in LAN Server 4.0 took the name of a server to execute on. In DSS, the use of this parameter has been expanded and is now called pszTarget. You can still pass in a servername, but the API scopes the call to the server's resource domain.
The following examples help introduce scoping rules.
We will start with a cell by the name of /.../mybigcell with two resource domains, resdom_1 and resdom_2. The domain resdom_1 has SERVER1 while resdom_2 has SERVER2.
Example 1: Scoped to a server's resource domain. NetUserEnum ("\\SERVER1", ... ) This returns all users belonging to resdom_1. NetUserEnum ("\\SERVER2", ... ) This returns all users belonging to resdom_2. Example 2: Scoped to a cell. NetUserEnum ("/ ... /anycell", ...) This returns all DSS users in / ... /anycell. NetUserEnum ("/.:", ... ) This returns all DSS users in the local cell. Example 3: Scoped to a resource domain. NetUserEnum ("//resdom_1", ... ) This returns all the users associated with resource domain resdom_1. NetUserEnum ("//bldg901@/ ... /devcell", ... ) This returns all the users in cell / ... /devcell associated with resource domain //bldg901.
OTHGRPS/OTHALIAS/OTHUSERS
These special entries provide a way for enumeration APIs to indicate that information outside of the scope is available. For example, NetGroupGetUsers returns all of the users in resdom 1 that are members of GRP1 when (//resdom_1, ... ) is used and GRP1 is represented as ... . It is possible there could be other users in the group which are not actually part of the resource domain. If this is the case, the API returns OTHUSERS. This informs you that there are others in the group that are members of another resource domain.
The following table illustrates a sample DSS cell containing two resource
domains: deptJRAS and Development. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Table 2. Sample DSS Cell (/ ... /samplecell) ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ RESOURCE DOMAIN: ³ RESOURCE DOMAIN: ³
³ DEPTJRAS ³ DEVELOPMENT ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Users: ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ JANE - Administrator ³ JANE - User ³
³ JOE - User, print-operator ³ JACK - Administrator ³
³ JACK - User ³ SUSAN - User ³
³ ³ ³
³ ³ ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Groups: ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ o GRP1 ³ o CODERS ³
³ - JANE ³ - JANE ³
³ - JACK ³ - JOE ³
³ o GRP2 ³ - dceuser ³
³ ³ o TESTERS ³
³ ³ o GRP2 ³
³ ³ ³
³ ³ ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Servers: ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ S1 ³ DEVSRV ³
³ ³ ³
³ Alias: UTILITIES ³ Alias: COMPILER ³
³ Application: LOTUS 1-2-3 ³ Application: IPMD ³
³ ³ ³
³ ³ ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Non-DSS Users ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ o Non-DSS Users ³ ³
³ - cell_admin ³ ³
³ ³ ³
³ ³ ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ Non-DSS Groups ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
³ o laser_users ³ ³
³ - cell_admin ³ ³
³ - JANE ³ ³
³ ³ ³
³ ³ ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Here are several examples of scoping rules and the return of OTHGRPS and
OTHUSERS. These actions also apply to OTHALIAS.
Examples: 1) Enumerate the users in resource domain deptJRAS. NetUserEnum("//deptJRAS", ...) or NetUserEnum("\\\\S1", ...) API will return JANE, JOE, and JACK. 2) Enumerate the users in resource domain Development. NetUserEnum("//Development", ...) or NetUserEnum("\\\\DEVSRV", ...) API will return JANE, JACK, and SUSAN. 3) Enumerate the users in the local cell. NetUserEnum("/ ... /samplecell", ...) or NetUserEnum("/.:", ...) API will return JANE, JOE, JACK, SUSAN. 4) Enumerate the groups in the cell in which JOE is a member. NetUserGetGroups("/ ... /samplecell", "JOE", ...) API will return CODERS. 5) Enumerate the groups in resource domain deptJRAS in which JOE is a member. NetUserGetGroups("//deptJRAS","JOE", ...) or NetUserGetGroups("\\\\S1","JOE", ...) This API returns, OTHGRPS. JOE is not a member of any groups in resource domain deptJRAS. OTHGRPS is returned to indicate that JOE is a member of groups outside of the resource domain. 6) Enumerate the groups in the local cell in which JANE is a member. NetUserGetGroups("/.:","JANE", ...) or NetUserGetGroups("/ ... /samplecell","JANE", ... ) This API returns GRP1, CODERS and OTHGRPS. OTHGRPS is returned because JANE is a member of laser-users, which is not a valid name for a DSS group.
DSS provides expanded capabilities with the existing Net APIs by expanding the valid values for pszTarget. However, if an application must run on non-DSS clients, you should either not use the new forms or determine what system is running the application and dynamically use the correct value.