home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / k95source / GetUserInfo.c < prev    next >
C/C++ Source or Header  |  2020-01-01  |  3KB  |  100 lines

  1. /* By Peter 'Luna' Runestig <peter@runestig.com> 1996, 99
  2.  */
  3. #include <windows.h>
  4. #include <lmaccess.h>
  5. #include <lmapibuf.h>
  6. #include <stdio.h>
  7.  
  8. int GetUserInfo(LPWSTR wCompName, LPWSTR wUserName);
  9. int UnicodeToOEM(LPWSTR InString, char *OutString, int OutStringSize);
  10. int OEMToUnicode(char *InString, LPWSTR OutString, int OutStringSize);
  11.  
  12. char HomeDir[100] = "", ProfilePath[100] = "";
  13.  
  14. int main(int argc, char *argv[], char *envp[])
  15. {
  16.     unsigned short wCompName[128], wDomainName[128], wUserName[128], *wPDCName;
  17.     char *CompName = NULL;
  18.     char *DomainName = "BOLL.KL.SE";
  19. //    char *CompName = "\\\\BOLLNT01";
  20. //    char *DomainName = NULL;
  21.     char *UserName = "LunaUser";
  22.  
  23.     OEMToUnicode(UserName, wUserName, sizeof(wUserName));
  24.  
  25.     if (DomainName) {
  26.         OEMToUnicode(DomainName, wDomainName, sizeof(wDomainName));
  27.         if (NetGetDCName(NULL, wDomainName, (LPBYTE *)&wPDCName)) {
  28.             printf("Cannot find PDC!\n");
  29.             return 2;
  30.         } 
  31.         GetUserInfo(wPDCName, wUserName);
  32.         NetApiBufferFree(wPDCName);
  33.     }
  34.     else if (CompName) {
  35.         OEMToUnicode(CompName, wCompName, sizeof(wCompName));
  36.         GetUserInfo(wCompName, wUserName);
  37.     }
  38.  
  39.     if (*HomeDir && *ProfilePath)
  40.         printf("User:\t\t%s\nHome Dir:\t%s\nProfile Path:\t%s\n", UserName, HomeDir, ProfilePath);
  41.     return 0;
  42. }
  43.  
  44.  
  45.  
  46. int GetUserInfo(LPWSTR wCompName, LPWSTR wUserName)
  47. {
  48.   int err;
  49.   LPUSER_INFO_3 UserInfo;
  50. /*typedef struct _USER_INFO_3 {
  51.     LPWSTR    usri3_name;
  52.     LPWSTR    usri3_password;
  53.     DWORD     usri3_password_age;
  54.     DWORD     usri3_priv;
  55.     LPWSTR    usri3_home_dir;
  56.     LPWSTR    usri3_comment;
  57.     DWORD     usri3_flags;
  58.     LPWSTR    usri3_script_path;
  59.     DWORD     usri3_auth_flags;
  60.     LPWSTR    usri3_full_name;
  61.     LPWSTR    usri3_usr_comment;
  62.     LPWSTR    usri3_parms;
  63.     LPWSTR    usri3_workstations;
  64.     DWORD     usri3_last_logon;
  65.     DWORD     usri3_last_logoff;
  66.     DWORD     usri3_acct_expires;
  67.     DWORD     usri3_max_storage;
  68.     DWORD     usri3_units_per_week;
  69.     PBYTE     usri3_logon_hours;
  70.     DWORD     usri3_bad_pw_count;
  71.     DWORD     usri3_num_logons;
  72.     LPWSTR    usri3_logon_server;
  73.     DWORD     usri3_country_code;
  74.     DWORD     usri3_code_page;
  75.     DWORD     usri3_user_id;
  76.     DWORD     usri3_primary_group_id;
  77.     LPWSTR    usri3_profile;
  78.     LPWSTR    usri3_home_dir_drive;
  79.     DWORD     usri3_password_expired;
  80. }USER_INFO_3, *PUSER_INFO_3, *LPUSER_INFO_3;*/
  81.   
  82.     err = NetUserGetInfo(wCompName, wUserName, 3, (LPBYTE *)&UserInfo);
  83.     if (!err) {
  84.         UnicodeToOEM(UserInfo->usri3_home_dir, HomeDir, sizeof(HomeDir));
  85.         UnicodeToOEM(UserInfo->usri3_profile, ProfilePath, sizeof(ProfilePath));
  86.         NetApiBufferFree(UserInfo);
  87.     }
  88.     return err;
  89. }
  90.  
  91. int UnicodeToOEM(LPWSTR InString, char *OutString, int OutStringSize)
  92. {
  93.   return WideCharToMultiByte(CP_OEMCP, 0, InString, -1, OutString, OutStringSize, NULL, NULL);
  94. }
  95.  
  96. int OEMToUnicode(char *InString, LPWSTR OutString, int OutStringSize)
  97. {
  98.   return MultiByteToWideChar(CP_OEMCP, 0, InString, -1, OutString, OutStringSize);
  99. }
  100.