Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL2k & MSAccess- узнать имя юзера? / 9 сообщений из 9, страница 1 из 1
27.07.2001, 09:32
    #32010529
Андрей
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2k & MSAccess- узнать имя юзера?
Подскажите можно ли при использовании WinNT логинов (т.е. не делая отдельных в MSSQL) получить имя пользователя? т.е. хотелось бы выводить запросы для каждого юзера свои и ограничивать своими данными из общей таблицы, для чего хотелось бы получать имя юзера - как?
...
Рейтинг: 0 / 0
27.07.2001, 09:45
    #32010532
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2k & MSAccess- узнать имя юзера?
suser_sname()
...
Рейтинг: 0 / 0
27.07.2001, 10:19
    #32010538
AlexUnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2k & MSAccess- узнать имя юзера?
Для аналогичной задачи я использую функцию VBA чтения данных из реестра (нашел в Инете):
Option Compare Database
Option Explicit

'Registry keys
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

'Registry access constants
Public Const KEY_QUERY_VALUE = &H1 'Permission to query subkey data.
Public Const KEY_SET_VALUE = &H2 'Permission to set subkey data.
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_READ = KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY
Public Const KEY_WRITE = KEY_SET_VALUE Or KEY_CREATE_SUB_KEY
Public Const KEY_ALL_ACCESS = KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_SUB_KEY Or KEY_CREATE_LINK Or KEY_SET_VALUE

Public Const REG_OPTION_NON_VOLATILE = 0&
Public Const REG_OPTION_VOLATILE = &H1

Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

Public Type RegTypes
RegNonee As Long
RegSZ As Long
RegExpandSz As Long
RegBinary As Long
RegDword As Long
RegDwordLittleEndian As Long
RegDwordBigEndian As Long
RegLink As Long
RegMultiSz As Long
RegResourceList As Long
RegFulResourceDesc As Long
End Type



Private Declare Function RegOpenKeyEx Lib "advapi32" 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 RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal szData As String, ByVal cbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal szData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long

Public Function RegGetValue(Root As Long, SubKey As String, Key As String) As String
Dim rt As RegTypes
rt = GetRegTypes
Dim Buffer As String, hKey As Long, nType As Long, nSize As Long
RegGetValue = ""
If Not RegOpenKeyEx(Root, SubKey, 0, KEY_READ, hKey) Then
nSize = 0
RegQueryValueEx hKey, Key, 0, nType, Buffer, nSize
If hKey And nSize > 0 And nType = rt.RegSZ Then
Buffer = Space(nSize + 1)
RegQueryValueEx hKey, Key, 0, nType, Buffer, nSize
RegGetValue = Left(Buffer, nSize - 1)
RegCloseKey hKey
End If
End If
End Function

Public Sub RegSetValue(Root As Long, SubKey As String, Key As String, value As String)
Dim rt As RegTypes
rt = GetRegTypes

Dim hKey As Long, sa As SECURITY_ATTRIBUTES, nDisp As Long
If Not RegCreateKeyEx(Root, SubKey, 0, vbNull, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, sa, hKey, nDisp) Then
RegSetValueEx hKey, Key, 0, rt.RegSZ, value, Len(value) + 1
RegCloseKey hKey
End If
End Sub


Public Function GetRegTypes() As RegTypes
With GetRegTypes
.RegNonee = 0
.RegSZ = 1
.RegExpandSz = 2
.RegBinary = 3
.RegDword = 4
.RegDwordLittleEndian = 4
.RegDwordBigEndian = 5
.RegLink = 6
.RegMultiSz = 7
.RegResourceList = 8
.RegFulResourceDesc = 9
End With
End Function

'Использование:
'sUser = RegGetValue(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion", "RegisteredOwner")
'Call RegGetValue(HKEY_CURRENT_USER, "SOFTWARE\ODBC\ODBC.INI\" & sDSN, "LastUser", sLastUser)
'RegSetValue HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion", "RegisteredOwner", "Darth Vader"
'RegGetValue(HKEY_LOCAL_MACHINE, "Software\Microsoft\Shared Tools©omctl32.ocx", "Path")
'Примечание: Эти функции работают только с текстовыми ключами (те, что в RegEdit'e помечены символом 'ab').
...
Рейтинг: 0 / 0
27.07.2001, 10:24
    #32010539
Андрей
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2k & MSAccess- узнать имя юзера?
Спасибо!
...
Рейтинг: 0 / 0
27.07.2001, 12:49
    #32010550
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2k & MSAccess- узнать имя юзера?
Вообще-то что бы узнать имя юзера и имя его компьютера есть АПИшные функции GetUserName и GetComputerName, лезть за этим в реестр совсем необязательно. Но они должны вызываться на клиентской части, а я так понимаю что нужно другое.


The GetUserName function retrieves the user name of the current thread. This is the name of the user currently logged onto the system.

BOOL GetUserName(

LPTSTR lpBuffer, // address of name buffer
LPDWORD nSize // address of size of name buffer
);

The GetComputerName function retrieves the computer name of the current system. This name is established at system startup, when it is initialized from the registry.

BOOL GetComputerName(

LPTSTR lpBuffer, // address of name buffer
LPDWORD nSize // address of size of name buffer
);

2AlexUnik
Что за Швондер вам эти тексты подсовывает?
...
Рейтинг: 0 / 0
30.07.2001, 05:07
    #32010619
AlexUnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2k & MSAccess- узнать имя юзера?
2 SergSuper
Вы, наверное, меня непоняли... Я выражаю свое, а не Ваше мнение, когда привожу примеры. Вспомните, что я написал: "Для аналогичной задачи я использую функцию VBA чтения данных из реестра" - не функцию "АПИ", а именно функцию VBA. Хотя, не сомневаюсь, что Вы могли бы написать и эту функцию короче
Быть может, мой совет не подходит к данной ситуации, но мне всегда хотелось придерживаться диалектического взгляда на проблему. Самое удивительное, что в моей работе мне это помогает. Я предпочитаю услышать сотню мнений различных людей, пусть и не всегда правильных, чем одно "абсолютно правильное" мнение знатока.
PS. Честно говоря, насчет Швондера не понял... Мы здесь не кошек мучаем. Это что - выражение Вашего настроения или отношения к людям?
...
Рейтинг: 0 / 0
30.07.2001, 06:52
    #32010626
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2k & MSAccess- узнать имя юзера?
2 AlexUnik
Если чего обидное написал - прошу извинить, я просто хотел пощутить. Видимо не слишком удачно.
А функции уже написаны MSом
...
Рейтинг: 0 / 0
30.07.2001, 07:11
    #32010628
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2k & MSAccess- узнать имя юзера?
А Швондер кошек не мучал, он только давал Шарикову разные книжки(после них у Шарикова появлялись идеи типа "всё отобрать и поделить"), которые профессор Преображенский выкидывал в печку.
Так что насчет моего "отношения к людям или выражения моего" настроения - вот тут я не понял.
...
Рейтинг: 0 / 0
30.07.2001, 07:28
    #32010633
AlexUnik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2k & MSAccess- узнать имя юзера?
2 SergSuper
Насчет книжек - история хранит много примеров того, что одну и ту же книгу можно понимать по-разному (Библия в представлении инквизиции, Ницше в понимании Гитлера). Мое мнение не совпадает с Вашим - но это не повод для использования нарицательных литературных образов.
Недавно Дед Маздай привел классический пример нашего спора (анекдот №10): http://www.anekdot.ru/an/an0107/010713.html

PS. С удовольствием пообщался бы с Вами за кружечкой пива, когда будете в наших краях (т.е. Москве).
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL2k & MSAccess- узнать имя юзера? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]