Как узнать текущую учётную запись?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
JWST
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 07.01.2006 (Сб) 21:05

Как узнать текущую учётную запись?

Сообщение JWST » 09.01.2006 (Пн) 17:44

Правильнее будет сказать мне нужно попасть в папки:

C:\DocumentsandSettings\ТекущийПользователь\LocalSettings и
С:\Documents and Settings\ТекущийПользователь\Application Data

если конечно текщая (загруженная в данный момент) винда стоит на диске C.

Простой поиск папок не подходит, потому как у меня на компе две винды. Одна на C, другая на E. Обе XP и как мне кажется эта идея не грамотна и не правильна.

Так вот задача узнать какой диск и текущий пользователь.

Может кто сталкивался с этой задачей?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.01.2006 (Пн) 17:51

GetUserName?
Lasciate ogni speranza, voi ch'entrate.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 09.01.2006 (Пн) 19:19

Вообщето специальные дериктории могут располагаться где угодно, и вовсе не обязательно в папке Documents and settings.
Функция SHGetSpecialFolderPath.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

JWST
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 07.01.2006 (Сб) 21:05

Сообщение JWST » 10.01.2006 (Вт) 2:03

Всё конечно прекрасно и замечательно. Но поиск по форуму с запросом: SHGetSpecialFolderPath
ничего не выдал. А можете вы пример привести как это будет выглядеть.

меня интересует как я уже сказал три (ну четыре) вещи:

1. win$ = Диск загруженной в данный момент ОС
2. LoSe$ = ...ТекущийПользователь\LocalSettings
3. ApDa$ = ...ТекущийПользователь\Application Data
4. TP$ = Текущий Пользователь

что там писать?

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 10.01.2006 (Вт) 2:35

TP$ - GetUserName
Объявление:
Код: Выделить всё
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long


win$ - GetWindowsDirectory, GetSystemDirectory
Код: Выделить всё
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long


ApDa$,LoSe$ - SHGetSpecialFolderPath или SHGetSpecialFolderLocation

Для ApDa:
Код: Выделить всё
Private Const CSIDL_APPDATA As Long = &H1a

или
Код: Выделить всё
CSIDL_LOCAL_APPDATA


Для LoSe$ видимо прийдеться юзать константу
Код: Выделить всё
Private Const CSIDL_PERSONAL As Long = &H5

и потом добавить "\Application Data"
Пример:
Код: Выделить всё
Private Const CSIDL_APPDATA As Long = &H1a
Private Const CSIDL_PERSONAL As Long = &H5
Const CSIDL_DESKTOP = &H0
Const CSIDL_PROGRAMS = &H2
Const CSIDL_CONTROLS = &H3
Const CSIDL_PRINTERS = &H4
Const CSIDL_PERSONAL = &H5
Const CSIDL_FAVORITES = &H6
Const CSIDL_STARTUP = &H7
Const CSIDL_RECENT = &H8
Const CSIDL_SENDTO = &H9
Const CSIDL_BITBUCKET = &HA
Const CSIDL_STARTMENU = &HB
Const CSIDL_DESKTOPDIRECTORY = &H10
Const CSIDL_DRIVES = &H11
Const CSIDL_NETWORK = &H12
Const CSIDL_NETHOOD = &H13
Const CSIDL_FONTS = &H14
Const CSIDL_TEMPLATES = &H15
Const MAX_PATH = 260
Private Type SHITEMID
    cb As Long
    abID As Byte
End Type
Private Type ITEMIDLIST
    mkid As SHITEMID
End Type
Private Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAboutA" (ByVal hWnd As Long, ByVal szApp As String, ByVal szOtherStuff As String, ByVal hIcon As Long) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'Show an about window
    ShellAbout Me.hWnd, App.Title, "Created by the KPD-Team 1999", ByVal 0&
    'Set the graphical mode to persistent
    Me.AutoRedraw = True
    'Print the folders to the form
    Me.Print "Application data folder: " + GetSpecialfolder(CSIDL_APPDATA)
    Me.Print "Local settings folder: " + GetSpecialfolder(CSIDL_PERSONAL) & "\Local Settings"
End Sub
Private Function GetSpecialfolder(CSIDL As Long) As String
    Dim r As Long
    Dim IDL As ITEMIDLIST
    'Get the special folder
    r = SHGetSpecialFolderLocation(100, CSIDL, IDL)
    If r = NOERROR Then
        'Create a buffer
        Path$ = Space$(512)
        'Get the path from the IDList
        r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$)
        'Remove the unnecessary chr$(0)'s
        GetSpecialfolder = Left$(Path, InStr(Path, Chr$(0)) - 1)
        Exit Function
    End If
    GetSpecialfolder = ""
End Function


Так понятно :?:
الفيجوال بيسك الرابح

JWST
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 07.01.2006 (Сб) 21:05

Сообщение JWST » 10.01.2006 (Вт) 12:14

Сейчас буду разбираться. За ранне спасибо!

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 10.01.2006 (Вт) 12:38

%USERPROFILE%


Environ$("USERPROFILE")


;о))
Пора уже всем хорошим людям собраться и убить всех плохих людей.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 182

    TopList