Component Set for Windows NT/2000 (NTSet)

Frequently Asked Questions

NTSet, v1.15

General Questions


  • I-m a registered customer. How can I update to a newer NTSet version?

    Every registered user of NTSet has its own online account at our Product Zone at http://www.sam-solutions.net/. This account is generated automatically after you purchase our product (you may also set up your account before the registration, for tech support, for example). The information about your account (including your login and password) is sent to the email address you specified during the registration process. If you lost your login or/and password, click here and enter your email address. Your personal logon information will be sent to you shortly. After you have logged in, you need to go to the -Product Registration and Your Status- section and follow the instructions.

    The customer who bought our product before the new Product Zone was released should also use the -Forgot- section to retrieve their logon information.
  • I-m a registered customer. My email address has changed, please send your messages to another email; Please, do not send me any news messages in future.

    Please, login to your personal Control Panel (PCP) at http://www.sam-solutions.net/products and update your personal information in the -Edit my Profile- section. You may also subscribe and unsubscribe to news in the -Subscription- section, or you can delete your account at all in the -Edit my Profile- section.
  • Are there any restrictions to your components that I should be aware of?

    If you mean the shareware version restrictions - no. You just won-t have source code, and a lower priority in support.
  • I wanted to know if I should register the component to be able to sell my software using the NT Component set?

    You may use shareware version of NTSet for evaluation or educational purposes only. You should not use the components in the production code, whether it is an in-house application or software to sell. You need a copy of NTSet for every developer. After you release an application, we do not require a royalty fee from every sold or used copy of your application (i.e. it is royalty-free). If you use the components in production code without registering them, you violate license agreement.
  • Do your components work under Windows 95/98 and ME? What should I do to make them work?

    NTSet components' destination platforms are Windows NT, Windows 2000 and Windows XP. NTSet components can work on Windows 95/98/ME. But, in this case they cannot manage local workstation. They can only work against remote computer running NT/2000/XP platform.

    NTSet components work under Windows 95/98/ME providing that a set of DLLs has been installed on the computer. Search the Internet for the self-extracting archive NEXUS.EXE. This archive contains set of DLLs from Microsoft. Extract them into a folder that is listed in system path (for example c:WindowsSystem).
  • I installed the components and the list of Dlls for Windows 98 and run the example program Umanager and I have the message "The operation is not supported on workstations" what I have to do for work from with Windows 98 station?

    Most of the components in NTSet collection work on Windows 95/98/ME workstations, but in this case their target should be remote NT/2000/XP workstation or server. Most probably you did not set the MachineName property to point to a remote computer.
  • Can I develop on a Win95 machine (i.e. compile Delphi app) and run it on an NT machine? What will your components do if the program is run on a Windows 95 machine? Do you raise an ENTException?

    The components will work under Windows 95 if it has the required DLLs (radmin32.dll and the rest). You can do development on Windows 95, then deploy on Windows NT. The components raise ENTException if the problem happens in Windows API. It raises Exception if it cannot load radmin32.dll. (This should and will be changed to ENTException too.)
  • If I write a program that works on my Windows 2000 server, does it then also work on a Windows NT 4 server? Or do I have to install another dpk file?

    No, it should work on both servers, unless you use some Windows 2000 specific functionality. Those functions are usually marked in help file as "Windows 2000 only".
  • In Windows 2000, as Administrator, after running the installation process I could not find the NTSet components in the components palette.

    The installation program compiles the *.dcu files into a package (nt50.bpl for example) and then installs it into Delphi palette. It looks like the installtion program did not complete the compilation. You may start installation again to read instructions on how to compile and install package manually. For example, to install the set on Delphi 5 you need to start Delphi, open the file NT50.dpk. This will open package window. Press "Compile" button, then "Install" button.
  • I am using your NT Set Component Collection with Delphi 5. The compiling of my Project works fine and error-free. If I start my project in the Delphi 5 IDE with Project->Start he asked me where the NTCommon.pas is available. I do not have NTCommon.pas only a NTCommon.dcu that is supplied. Could you help me about this problem? Is there any workaround?

    If you are not the registered user, you do not have the source code. Just press the "Ignore" button and Delphi will continue execution. The behavior you see happens only when you work under IDE configured to stop on exceptions. You may configure your IDE, either Delphi or C++ Builder not to stop on exceptions.
  • Can you tell me a bit more what I can and can't do on my Windows Millennium PC with the components.

    From Windows Millennium you can remotely manage other NT or 2000 or XP workstations and servers, but you cannot configure your local Millennium PC.
  • I downloaded NTSet and installed it, but when I try to run the example I get an error that file Userman.PAS is missing. How do you get around this?

    You should be able to run an example using *.dcu files. Make sure that the folder with ntset *.dcu files (by default c: tset) is in library path. Delphi or C++ Builder may want to recompile Userman.PAS if there is a name collision between NTSet units and the units installed on your computer. If this is the case, you may temporarily clear library path, leaving only path to standard libraries and NTSet files.

    back to top

    TNTUserMan Questions


  • Is TNTUserMan Component really useful for Windows 2000? In the NTSet.hlp I could not find any hint about this issue. If yes, do I have to provide for special things in comparison with NT 4.0? If I want to develop a user management for a Windows 2000 server can I do this on a NT 4.0 Machine or do I have to do this on a W2k-Server?

    There are a couple of issues with Windows 2000 server. If your user manager utility is for the mixed Windows 2000 / Windows NT domain, TNTUserMan component should be just fine. If your domain is Windows 2000 only, the component will not be able to set some Windows 2000 specific properties.
  • What would be the fastest way to find out if the current user is a member of some specific group?

    The fastest way is to check user's primary group. Each user has one primary group, which is identified by ID. (See TNTUserMan.UserInfo.PrimaryGroupID property).

    You may also obtain the list of all groups that the user is member of by using MemberOfGlob and MemberOfLocal properties.

    You may use TNTUserMan.LogonUserName property to determine the name of a logged on user. This name will include the name of the domain that the user belongs to:
    "DOMAINuser".
  • Is there a possibility to resolve a username of the user logged on the station where my program runs?

    Use GetLogonUserName function and LocalComputer property, defined in the NTCommon.pas.
  • When a userlist is wanted (from TNTUserMan) is the list cached ? Or is the PDC questioned every time I ask for TNTUserMan.users ?

    It is not cached. It will retrieve the list again. You may want to cache it yourself, and read Users property only to refresh the list.
  • I need to be able to change the location of the user's 'Home Directory', can this be done with one of your components, and if yes, how then?

    Please, try the TNTUserMan.UserInfo.HomeDir property.
  • Is it possible to retrieve the logon times for a Windows user account?

    If you mean the periods of time, when a particular user is allowed to login on a workstation, yes. Please check out the property NTUserMan1.UserInfo.LogonHours
  • Is there a way to convert the UserSID property to its string representation in Delphi 5?

    You can use the function ConvertSidToStringSid, declared in NTCommon.pas
  • Can I rename a user in the TNTUserMan?

    Try the ChangeUserName method.
  • Using the TNTUserMan component, when I call the ChangePassword function I get an error 1327. If I use the Password property, as shown in your example, the password changes without an error. Do you have an example of calling the ChangePassword function?

    Password property works using the function that requires administrator login. It works regardless any other reasons, as long as current user is Administrator.

    ChangePassword function is designed to be used by the user who is not an administrator. The user can change his password if he knows the old password and his is allowed to change password. Error 1327 means "Logon failure: user account restriction." Maybe the User Manager shows "User cannot change password" checkbox checked?
  • I noticed it is possible to retrieve either local groups or global groups. But I do not seem to find this for the users. Can only domain users be read, or can I read also local users?

    Each Windows NT server has both local and global groups. Workstations have only local groups. Global groups may contain users. Global groups are known across the domain. Local groups usually contain global groups and users and they are private for the workstation/server where they are defined. Use GetGlobalGroups and GetLocalGroups functions.
  • Before I reinvent the wheel, do you have any existing examples for creating hundreds of NT domain accounts using a text file to get the names of the users to be added?

    We have an example that creates account from user interface. This is a procedure NewUser1Click in unit FrmMan.pas. You can modify it to read user names from the text file.

    back to top

    TNTServerInfo Questions


  • Does your NTSet components for Delphi support shutdown for the system?

    Yes, try TNTServerInfo component, the Shutdown method.
  • Why can-t I shutdown every workstation in my network using a Shutdown method in the component TNTServerInfo?

    In order to shutdown the workstation you have to be the workstation-s administrator. If you are Domain administrator, make sure that every workstation includes "Domain Administrators" into its "Administrators" group. If you are not the Domain Admin, and you know that password of administrator on the destination workstation, make sure that you include workstation name when assigning LogonAs.UserName:

    NTServerInfo1.LogonAs.UserInfo := 'COMPUTERusername'.
  • Why can-t I see every workstation in my network using the GetServersEx method?

    You may not see all the workstations in the network if you specify a wrong server name in GetServersEx function.

    The AServerName parameter should be:
    - empty string if the calling workstation is a member of the domain;
    - name of the backup domain browser server if the workstation is not a member of domain.
    - name of primary domain controller if the workstation is not a member of domain and the domain does not have any backup domain browsers.

    You may also use TNTNetBrowser component to retrieve list of network hosts.
  • I am developing an application that requires the use of TNTServerInfo component. Although the resulting executable works fine on the development machine, when the executable is run on any other machine the following error is received: The system cannot find the file specified. This error throws by the GetServers method. Any ideas?

    In GetServers method we use Windows API function NetServerEnum. It seems that in Windows 2000 Microsoft has deprecated usage of the parameter that allows selecting target server. You should either use GetServers('') or use TNTNetBrowser component to obtain the list of servers.
  • I'm trying to build a list of just servers on my domain. Normally all workstations are also listed (that's correct!) but I want to filter out all DC's, PDC's and standard servers only, how can I accomplish that?

    Please have a look at help file for the description of GetServersEx function.

  • In NT User Manager it is possible to set account policies- Account lockout after n bad attempts, maximum password age, password uniqueness and other properties. I have found a subset of these (password never expires, account disabled) but would like to be able to set account lockout properties (lockout after n bad attempts, lockout duration) - I have not found these features in "NTSet" are they available? If so - could you please tell me how to use them?

    The features you need are available in the TNTServerInfo component of the NTSet collection.
  • Is there an option to quickly discover if a machine is online or not? All your components take about four to five seconds to return a message that the network path could not be found.

    Yes, there is a problem with the off-line computers. One way to ease the problem is to check computer accounts registered on domain controller.

    NTServerInfo has a method called GetServerAccounts. It returns a list of active computers. This list is more more up-to-date then the one returned by the GetServers method. Have a look at the example project ServerInfo.dpr

    However, this is not a 100% cure for the problem. We do not know the way to minimize the delay before an exception "Network path not found" is thrown. We believe it is Windows NT behavior.

    back to top

    TNTService Questions


  • Is it possible that I use the TNTService component on a server with the database locked by the service manager? If so, how can I handle that?

    I believe you cannot break the lock that somebody else established. However the only time the service control manager acquires a lock is when it is starting a service. You may have a look at ntset.hlp, TNTService.DBLocked property.
  • How to create a service application, which can run after I had created the service for it with your TNTService component?

    TNTService can only manage services, it does not help in creating service application.
  • How can I stop a service programmatically using your TNTService class?

    You can stop a service with a call to the ControlService method. You will have to pass in control code CONTROL_STOP. For more information see ntset.hlp help file, topic ControlService.

  • How can I set a service status? I noticed there is a function SetService status(-) available in Windows API.

    SetServiceStatus is not implemented in TNTService component. This function is intended for use by the service application itself, while TNTService component only controls services externally.

    back to top

    TNTVerifyLogon Questions


  • I need a Delphi component for validating a password with Windows NT or Windows 2000. Something like Function
    passwordok(domain,username,password:String): boolean;
    Can your components do that?


    Please have a look at the TNTVerifyLogon component. The example is provided with the latest version of NTSet.
  • I want to use TNTVerifyLogon component on a Windows 95/98/ME workstation. Is there anything special I should know?

    Windows 95/98/ME workstation should be configured for user-level security. The default settings are share-level security. You may change configuration from Control Panel, ?Network
  • DownloadRegisterDescription
    Latest Update
     

    • New version supports C++Builder 2006;
    • Implemented installation procedure for Delphi 2006;
    • Minor bug fixes.
    • Previous update (Mar, 02 2006):

      • Delphi 2006 support.
      • Minor bug fixes.
      • Previous update (Oct, 18 2005):

        • The collection has now 3 new components: TNTGroupPolicy: configures group policies on standalone computers or in Active Directory; TNTGroupPolicyBrowseDialog browses for existing group policy objects; TNTDirectoryContainer BrowseDialog browses for Active Directory containers.
        • This version supports Delphi 2005; C++Builder 5.0 is no longer supported.
        • TNTRegSecurity component got a new property Win64Redirect. When under WOW64, it allows to read either 32- or 64- bit registry.
        • Help system is redesigned to support both Delphi 2005, and previous Delphi versions.
        • Minor bug fixes.
        • Previous update (Jul, 21 2003):

          • The collection has got new component: TNTFirewall. The component configures the firewalls on the network connections. It works under Windows XP and Windows 2003.
          • The TNTVerifyLogon component has been completely rewritten. It now allows impersonating as the user whose credentials where successfully verified.
          • The TNTFileSecurity component has been modified to work under the non-administrative accounts. Now you can use it under regular user accounts to manage the files and folders of that user.
          • Minor bug fixes.
          • Previous update (Nov, 19 2002):

            • The collection has got its 13th component: TNTaskScheduler. The component schedules tasks to run at certain time in the future. Scheduling may be carried out for both local or remote computers.
            • The source code is Delphi 7 compatible.
            • TNTService component has been renamed, as discussed in the Support Forums. The new name is TNTServiceManager. The component is located in NTServiceMan.pas unit. The reason for renaming is a name conflict with a component from SvCom collection. Look at "TNTService renamed" section for more information.
            • TNTServerInfo component has got a new "Disks" property. This property returns list of drives installed on the remote computer.
            • Support for Delphi 4, C++Builder 4 has been dropped. If you are still using these versions, you may download version 1.12.
            • Minor bug fixes.
            • TNTService renamed

              TNTService component has been renamed to TNTServiceManager. If you are using this component in your project, you may migrate by following these steps:

              1) Make backup copy of your source files.

              2) Change Uses section of you *.pas files by replacing "NTService" with "NTServiceMan". It's best to do this operation in notepad, since Delphi may complain about components not found.

              3) Open DFM files of the forms that you had TNTservice component on. It is safe to do this operation in Delphi. Search for "TNTService" string and replace it with "TNTServiceManager".

              4) Try to compile your project. Delphi compiler will find rest of the places where you have to change TNTService to TNTServiceManager.



              If you wish to view the information concerning previous updates click here.

              You may find additional information concerning the product at the FAQ page or at our Support Forums.