I am running windows xp and would like my application to show the username of the person currently logged on (and viewing the application), how would i go about doing this??
Cheers
GTJ
Printable View
I am running windows xp and would like my application to show the username of the person currently logged on (and viewing the application), how would i go about doing this??
Cheers
GTJ
put this code into a moduleQuote:
Originally Posted by greythej
VB Code:
Global Const SPIF_SENDWININICHANGE = &H2 Global Const SPIF_UPDATEINIFILE = &H1 Global Const SPI_GETSCREENSAVETIMEOUT = 14 Global Const SPI_SETSCREENSAVETIMEOUT = 15 Global Const SPI_GETSCREENSAVEACTIVE = 16 Global Const SPI_SETSCREENSAVEACTIVE = 17 Global Const SPI_SETDESKWALLPAPER = 20 Public Const READ_CONTROL = &H20000 Public Const SYNCHRONIZE = &H100000 Public Const STANDARD_RIGHTS_ALL = &H1F0000 Public Const STANDARD_RIGHTS_READ = READ_CONTROL Public Const STANDARD_RIGHTS_WRITE = READ_CONTROL Public Const KEY_QUERY_VALUE = &H1 Public Const KEY_SET_VALUE = &H2 Public Const KEY_CREATE_SUB_KEY = &H4 Public Const KEY_ENUMERATE_SUB_KEYS = &H8 Public Const KEY_NOTIFY = &H10 Public Const KEY_CREATE_LINK = &H20 Public Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or _ KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or _ KEY_CREATE_LINK) And (Not SYNCHRONIZE)) Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or _ KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE)) Public Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE)) Public Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE _ Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE)) ' Possible registry data types Public Enum InTypes ValNull = 0 ValString = 1 ValXString = 2 ValBinary = 3 ValDWord = 4 ValLink = 6 ValMultiString = 7 ValResList = 8 End Enum ' Registry value type definitions Public Const REG_NONE As Long = 0 Public Const REG_SZ As Long = 1 Public Const REG_EXPAND_SZ As Long = 2 Public Const REG_BINARY As Long = 3 Public Const REG_DWORD As Long = 4 Public Const REG_LINK As Long = 6 Public Const REG_MULTI_SZ As Long = 7 Public Const REG_RESOURCE_LIST As Long = 8 ' Registry section definitions Public Const HKEY_CLASSES_ROOT = &H80000000 Public Const HKEY_CURRENT_USER = &H80000001 Public Const HKEY_LOCAL_MACHINE = &H80000002 Public Const HKEY_USERS = &H80000003 Public Const HKEY_PERFORMANCE_DATA = &H80000004 Public Const HKEY_CURRENT_CONFIG = &H80000005 Public Const HKEY_DYN_DATA = &H80000006 ' Codes returned by Reg API calls Private Const ERROR_NONE = 0 Private Const ERROR_BADDB = 1 Private Const ERROR_BADKEY = 2 Private Const ERROR_CANTOPEN = 3 Private Const ERROR_CANTREAD = 4 Private Const ERROR_CANTWRITE = 5 Private Const ERROR_OUTOFMEMORY = 6 Private Const ERROR_INVALID_PARAMETER = 7 Private Const ERROR_ACCESS_DENIED = 8 Private Const ERROR_INVALID_PARAMETERS = 87 Private Const ERROR_NO_MORE_ITEMS = 259 'Public Const HKEY_CURRENT_USER = &H80000001 'Global Const SPIF_SENDWININICHANGE = &H2 'Global Const SPIF_UPDATEINIFILE = &H1 'Global Const SPI_GETSCREENSAVETIMEOUT = 14 'Global Const SPI_SETSCREENSAVETIMEOUT = 15 'Global Const SPI_GETSCREENSAVEACTIVE = 16 'Global Const SPI_SETSCREENSAVEACTIVE = 17 'Global Const SPI_SETDESKWALLPAPER = 20 ' Registry API functions used in this module (there are more of them) Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Private Declare Function RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long Private Declare Function RegSetValueExLong Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpValue As Long, ByVal cbData As Long) As Long Private Declare Function RegFlushKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long Public Sub CreateKey(Folder As String, Value As String) Dim b As Object On Error Resume Next Set b = CreateObject("wscript.shell") b.RegWrite Folder, Value End Sub Public Sub CreateIntegerKey(Folder As String, Value As Integer) Dim b As Object On Error Resume Next Set b = CreateObject("wscript.shell") b.RegWrite Folder, Value, "REG_DWORD" End Sub Public Function ReadKey(Value As String) As String Dim b As Object Dim r On Error Resume Next Set b = CreateObject("wscript.shell") r = b.regread(Value) ReadKey = r End Function Public Sub DeleteKey(Value As String) Dim b As Object On Error Resume Next Set b = CreateObject("Wscript.Shell") b.RegDelete Value End Sub Public Function ReadRegistryGetAll(ByVal Group As Long, ByVal Section As String, Idx As Long) As Variant Dim lResult As Long, lKeyValue As Long, lDataTypeValue As Long Dim lValueLength As Long, lValueNameLength As Long Dim sValueName As String, sValue As String Dim td As Double On Error Resume Next lResult = RegOpenKey(Group, Section, lKeyValue) sValue = Space$(2048) sValueName = Space$(2048) lValueLength = Len(sValue) lValueNameLength = Len(sValueName) lResult = RegEnumValue(lKeyValue, Idx, sValueName, lValueNameLength, 0&, lDataTypeValue, sValue, lValueLength) If (lResult = 0) And (Err.Number = 0) Then If lDataTypeValue = REG_DWORD Then td = Asc(Mid$(sValue, 1, 1)) + &H100& * Asc(Mid$(sValue, 2, 1)) + &H10000 * Asc(Mid$(sValue, 3, 1)) + &H1000000 * CDbl(Asc(Mid$(sValue, 4, 1))) sValue = Format$(td, "000") End If sValue = Left$(sValue, lValueLength - 1) sValueName = Left$(sValueName, lValueNameLength) Else sValue = "Not Found" End If lResult = RegCloseKey(lKeyValue) ' Return the datatype, value name and value as an array ReadRegistryGetAll = Array(lDataTypeValue, sValueName, sValue) End Function Sub SaveText(txtSave As TextBox, Path As String) Dim TextString As String On Error Resume Next TextString$ = txtSave.Text Open Path$ For Output As #1 Print #1, TextString$ Close #1 End Sub
then use this code to get the username
VB Code:
text1.text = ReadKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\RegisteredOwner")
VB Code:
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Private Sub Form_Load() Dim strUserName As String strUserName = String(100, Chr$(0)) 'Get the username GetUserName strUserName, 100 'strip the rest of the buffer strUserName = Left$(strUserName, InStr(strUserName, Chr$(0)) - 1) MsgBox strUserName End Sub
cheers hack works like a treat!
Dont forget about the VB FAQ - http://www.vbforums.com/showthread.php?t=357723
Dang and drats!Quote:
Originally Posted by RobDog888
I forgot that was there in the FAQ *bangs head on wall* :(
Dont do that. You'll knock all that code out of your head. :)