ユーザープロファイルディレクトリの取得 <TOP>
ユーザープロファイルディレクトリを取得します。
GetAllUsersProfileDirectory 全ユーザー(All Users)プロファイルのルートのパスを取得
GetDefaultUserProfileDirectory 既定ユーザー(Default User)プロファイルのルートのパスを取得
GetProfilesDirectory ユーザープロファイルが格納されているルートディレクトリのパスを取得
GetUserProfileDirectory 現在ログインしているユーザのプロファイルディレクトリを取得
GetCurrentProcess 現在のプロセスに対応する疑似ハンドルを取得
OpenProcessToken アクセストークンをオープン
'================================================================ '= プロファイルディレクトリの取得 '= (GetUserProfileDirectory.bas) '================================================================ #include "Windows.bi" #define TOKEN_QUERY &H8 'アクセストークンをクエリする ' 全ユーザープロファイルのルートのパスを取得 Declare Function Api_GetAllUsersProfileDirectory& Lib "userenv" Alias "GetAllUsersProfileDirectoryA" (ByVal lpProfileDir$, lpcchSize&) ' 現在のプロセスの擬似ハンドルを取得 Declare Function Api_GetDefaultUserProfileDirectory& Lib "userenv" Alias "GetDefaultUserProfileDirectoryA" (ByVal lpProfileDir$, lpcchSize&) ' 全てのユーザープロフィールが蓄えられているルートディレクトリパスを取得 Declare Function Api_GetProfilesDirectory& Lib "userenv" Alias "GetProfilesDirectoryA" (ByVal lpProfileDir$, lpcchSize&) ' 全ユーザー(All Users)プロファイルのルートのパスを取得 Declare Function Api_GetUserProfileDirectory& Lib "userenv" Alias "GetUserProfileDirectoryA" (ByVal hToken&, ByVal lpProfileDir$, lpcchSize&) ' 現在のプロセスに対応する疑似ハンドルを取得 Declare Function Api_GetCurrentProcess& Lib "Kernel32" Alias "GetCurrentProcess" () ' プロセスと結び付けられたアクセストークンを開く Declare Function Api_OpenProcessToken& Lib "advapi32" Alias "OpenProcessToken" (ByVal ProcessHandle&, ByVal DesiredAccess&, TokenHandle&) Var Shared List1 As Object List1.Attach GetDlgItem("List1") : List1.SetFontSize 14 '================================================================ '= '================================================================ Declare Function StripTerminator(sInput As String) As String Function StripTerminator(sInput As String) As String Var zPos As Long zPos = InStr(1, sInput, Chr$(0)) If zPos > 0 Then StripTerminator = Left$(sInput, zPos - 1) Else StripTerminator = sInput End If End Function '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var sBuffer As String Var Ret As Long Var hToken As Long List1.ResetContent '全ユーザー(All Users)プロファイルのルートのパスを取得 sBuffer = String$(255, 0) Ret = Api_GetAllUsersProfileDirectory(sBuffer, 255) List1.AddString StripTerminator(sBuffer) '既定ユーザー(Default User)プロファイルのルートのパスを取得 sBuffer = String$(255, 0) Ret = Api_GetDefaultUserProfileDirectory(sBuffer, 255) List1.AddString StripTerminator(sBuffer) 'ユーザープロファイルが格納されているルートディレクトリのパスを取得 sBuffer = String$(255, 0) Ret = Api_GetProfilesDirectory(sBuffer, 255) List1.AddString StripTerminator(sBuffer) '指定したユーザーのプロファイルのルートディレクトリのパスを取得 sBuffer = String$(255, 0) Ret = Api_OpenProcessToken((Api_GetCurrentProcess), TOKEN_QUERY, hToken) '現在ログインしているユーザのプロファイルディレクトリを取得 Ret = Api_GetUserProfileDirectory(hToken, sBuffer, 255) List1.AddString StripTerminator(sBuffer) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End