0

キーの値を取得するスクリプトに取り組んでいます

HKCurrentUser\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Desktop

現在、返されているのは次のとおりです。

C:\WINDOWS\system32\config\systemprofile\Desktop

私が欲しい/返す必要があると思うとき:

%USERPROFILE%\Desktop

以下は、キーから情報を取得するスクリプトです。私が知る限り、正しい情報を取得する必要があります。私が欠けているものについて誰かが私を啓発できるかどうか疑問に思っています。また、コンピューター名とログインしているユーザー名も返されますが、どちらも正しく返されます。これは、かなりの数のマシンでリモートで実行される予定です。

'These are the constants for the following KEYS'
Const HKClassesRoot = &H80000000 'HKEY_CLASSES_ROOT
Const HKCurrentUser = &H80000001 'HKEY_CURRENT_USER
Const HKLocalMachine = &H80000002 'HKEY_LOCAL_MACHINE
Const HKUsers = &H80000003 'HKEY_USERS
Const HKCurrentConfig = &H80000005 'HKEY_CURRENT_CONFIG
'Setup objects to interact with here'
Set wshShell = WScript.CreateObject("Wscript.Shell")
strComputer = wshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
Set objNetwork = CreateObject("Wscript.Network")
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Define variable to store the current user and then pull the current user
Dim currentUser
strCurrentUser = objNetwork.UserName

'find the data in the string we want to get the value from'
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\"
strValueName = "Desktop"
'pull the info and store it in strValue'
objRegistry.GetStringValue HKCurrentUser,strKeyPath,strValueName,strValue

'setup for output of data to the file'
Dim strSpacer
Dim strData
strSpace = "+-------------------------------------------------------------------------------------------------------------------------+"
strData = "|  " & strComputer & " == " &  strCurrentUser & " == " & strValue & " |"

Dim strFileName
strFileName = "\\server\share\" & strCurrentUser & ".txt"
Set objFile = objFSO.OpenTextFile(strFileName,8,true)
objFile.write vbCrLf & strSpace & vbCrLf
objFile.write strData & vbCrLf
objFile.write strSpace & vbCrLf

'Close file'
objFile.Close

レビューの後、私は自分の質問に対する答えを見つけました。私がやっていることに対して、レジストリを間違って読んでいました。

strRegkey = "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Desktop"
strDataValue = wshShell.RegRead(strRegKey)

これは、キーに現在格納されている値を返します。

4

1 に答える 1

0

レジストリ値の環境変数%USERPROFILE%が、WMI サービス (LOCAL SYSTEM) を実行しているユーザーのプロファイルに展開されるのではないかと考えています。REG_EXPAND_SZ 値を読み取る場合GetStringValueと同じように動作するようです。GetExpandedStringValue

于 2013-08-19T09:16:04.630 に答える