Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Вывод имени текущего пользователя (http://forum.oszone.net/showthread.php?t=134167)

Sadowod 08-03-2009 23:56 1058369

Вывод имени текущего пользователя
 
Нужно для резервного копирования, чтобы батник сам копировал личные данные в определённое место, указывая при этом имя пользователя, от которого скопировано добро.
Батник будет запускаться на пользовательской машине из-зпод пользовательской учётки... Батник запустит WinRar с параметрами, в результате получается архив с именем в роде: Backup_%user%[01.01.2001]
Возможно есть такая переменная, которая обозначает это, но я не знаю такой...

ShaddyR 09-03-2009 00:15 1058380

Есть.
%username%
Подробнее: cmd, команда set без параметров - выведет список системных переменных ОС.

Sadowod 09-03-2009 15:01 1058756

Спасибо, ShaddyR. Перепробовал кучу разных переменных, и Profile и User и даже узнал значение переменной Userprofile а username не догадался...

Limonica 24-12-2012 23:15 2052844

Как не странно но этой переменной нет в некоторых не русскоязычных ОС, либо вместо имени юзера, выводится имя пк, есть ли альтернативный способ?

Iska 25-12-2012 01:26 2052886

Цитата:

Цитата Limonica
Как не странно но этой переменной нет в некоторых не русскоязычных ОС, »

Ложь.

Цитата:

Цитата Limonica
либо вместо имени юзера, выводится имя пк, »

Чушь.

Цитата:

Цитата Limonica
есть ли альтернативный способ? »

Есть много разных способов. Выбор наиболее предпочтительного зависит от предназначения. Опишите, где и как Вы собираетесь использовать имя пользователя.

Limonica 25-12-2012 11:05 2053031

Специально установили испанкую ОС (XP SP3 Home Edition):
Код:

C:\WINDOWS\system32>set
ALLUSERSPROFILE=C:\Dokumente und Einstellungen\All Users
CommonProgramFiles=C:\Programme\Gemeinsame Dateien
COMPUTERNAME=YOUR-117A1A6435
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 13 Stepping 8, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0d08
ProgramFiles=C:\Programme
PROMPT=$P$G
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\WINDOWS\TEMP
TMP=C:\WINDOWS\TEMP
USERPROFILE=C:\Dokumente und Einstellungen\LocalService
windir=C:\WINDOWS

Так же на испанской Windows Vista (SP2 64) вместо имени юзера, выводится имя компьютера и в set это было прописано.

Iska 25-12-2012 11:54 2053051

Limonica, я не верю в сказки. Что говорит по этому поводу служба поддержки?

Вы не ответили на вопрос:
Цитата:

Цитата Iska
Есть много разных способов. Выбор наиболее предпочтительного зависит от предназначения. Опишите, где и как Вы собираетесь использовать имя пользователя. »


ShaddyR 25-12-2012 14:04 2053140

Цитата:

Цитата Limonica
Специально установили испанкую ОС (XP SP3 Home Edition): »

как может папка пользователя называться
Цитата:

Цитата Limonica
USERPROFILE=C:\Dokumente und Einstellungen\LocalService »

а ProgramFiles -
Цитата:

Цитата Limonica
ProgramFiles=C:\Programme »

???
Iska, мы, похоже, еще многого не знаем об этом странном звере - Windows...

При том что в оригинальных вариантах как English, так и локализованных Russian все абсолютно совпадает (а по-другому и быть не может). Или под Испанию M$ отдельно писала ОС, с изменением базовых настроек?

Iska 25-12-2012 16:30 2053205

Цитата:

Цитата ShaddyR
как может папка пользователя называться
Цитата:

Цитата Limonica
USERPROFILE=C:\Dokumente und Einstellungen\LocalService »

» »

Может —
читать дальше »
Хорошо известные идентификаторы безопасности в операционных системах Windows:
Код:

wmic.exe Path Win32_Account where "SID='S-1-5-19'" get Name, Caption, Description
Код:

reg.exe query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-19" /v "ProfileImagePath"

ShaddyR 25-12-2012 16:54 2053218

Iska, э, нет. Это может значить только то, что запрос переменных сделан из среды PE, которая как раз и имеет подобный путь в качестве профиля пользователя. В полновесной системе у пользователя есть имя, прописанное в т.ч. в этом пути. Что еще раз подтверждает предыдущие выводы: озвученный скрин взят не из под клиентской ОС. Еще ссылка по теме: Переменные среды в Windows XP

ЗЫ: кстати, по ссылке узнал очередное новое для себя - переменные %cd% и %random%

Limonica 25-12-2012 19:08 2053302

https://www.google.com/search?q=C%3A...ient=firefox-a

Вы просто зажирели друзья, а решение уже нашли, без помощи таких теоретиков, с громкими словами, как вы.

Limonica 26-12-2012 02:39 2053509

Код:

Microsoft Windows [version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. Tous droits réservés.

C:\Windows\system32>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Windows\system32\config\systemprofile\AppData\Roaming
asl.log=Destination=file;OnFirstLog=command,environment,parent
CLASSPATH=.;C:\Program Files\Java\jre1.6.0_07\lib\ext\QTJava.zip
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=PC-DE-FRANCOISL
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
LOCALAPPDATA=C:\Windows\system32\config\systemprofile\AppData\Local
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\Common Files\Roxio Shared\DLLShared\;C:\Program Files\Common Files\Roxio Shared\DLLShared\;C:\Program Files\Common Files\Roxio Shared\9.0\DLLShared\;C:\Program Files\Common Files\DivX Shared\;C:\Program Files\QuickTime\QTSystem\;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Windows Live\Shared
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 6 Stepping 5, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0605
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
QTJAVA=C:\Program Files\Java\jre1.6.0_07\lib\ext\QTJava.zip
RoxioCentral=C:\Program Files\Common Files\Roxio Shared\9.0\Roxio Central33\
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Windows\TEMP
TMP=C:\Windows\TEMP
USERDOMAIN=WORKGROUP
USERNAME=PC-DE-FRANCOISL$
USERPROFILE=C:\Windows\system32\config\systemprofile
windir=C:\Windows

Код:

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS\system32>set
ALLUSERSPROFILE=C:\Dokumente und Einstellungen\All Users
CommonProgramFiles=C:\Programme\Gemeinsame Dateien
COMPUTERNAME=YOUR-117A1A6435
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 13 Stepping 8, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0d08
ProgramFiles=C:\Programme
PROMPT=$P$G
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\WINDOWS\TEMP
TMP=C:\WINDOWS\TEMP
USERPROFILE=C:\Dokumente und Einstellungen\LocalService
windir=C:\WINDOWS

Код:

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS\system32>set
ALLUSERSPROFILE=C:\Documents and Settings\All Users
asl.log=Destination=file
CLASSPATH=.;C:\Program Files\Java\jre6\lib\ext\QTJava.zip
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=AUSTENITE
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\cygwin\bin;C:\PROGRA~1\Java\JRE16~3.0_0\bin;C:\PROGRA~1\Java\JRE16~3.0_0\bin;C:\Program Files\Mozilla Firefox;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI.ACE\;.;C:\Program Files\QuickTime\QTSystem\
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 13, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0f0d
ProgramFiles=C:\Program Files
PROMPT=$P$G
QTJAVA=C:\Program Files\Java\jre6\lib\ext\QTJava.zip
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\WINDOWS\TEMP
TMP=C:\WINDOWS\TEMP
USERPROFILE=C:\Documents and Settings\LocalService
windir=C:\WINDOWS


Iska 26-12-2012 02:40 2053510

Цитата:

Цитата Limonica
Вы просто зажирели друзья, а решение уже нашли, без помощи таких теоретиков, с громкими словами, как вы. »

Не могли бы Вы его озвучить на русском языке для таких зажиревших теоретиков с громкими словами, как я, не знакомых с немецким?

Цитата:

Цитата ShaddyR
Iska, э, нет. Это может значить только то… »

Я имел в виду, что ничего криминального в самой такой папке/пути нет.

Limonica 26-12-2012 02:44 2053512

Вызов системной функции GetUserName.

ShaddyR 26-12-2012 04:36 2053538

Limonica, приятно себя чувствовать умнее других? Давать ссылку на гугль, не особо вникая, что в ней? На будущее - К All Users претензий нет, она как раз есть и должна быть в ХР. Еще какой-нибудь полезной ссылкой желаешь поделиться с теоретиками? ;)

Среда CMD отличается у разных ОС семейства Windows, потому и переменные могут отсутствовать или иметь значения, отличные от ожидаемых. В этом ключе надо либо делать проверку на версию системы, в которой делается запрос, либо использовать функции API - озвученная относится к одной из них.

Ох уж эти программисты...

Iska 26-12-2012 04:45 2053540

Цитата:

Цитата Limonica
Вызов системной функции GetUserName. »

Понятней не стало.

ShaddyR 26-12-2012 04:58 2053543

Limonica, если тебе интересно - в папке
Цитата:

Цитата Limonica
C:\Documents and Settings\LocalService »

обычно содержатся дополнительные сведения о локальных пользователях Windows. И папкой профиля она может быть для для процесса, запущенного от данного имени (напр., сервиса Windows). Второй вариант (в частности, для Vista) - запрос данных среды из CMD, запущенного не от имени администратора, при включенном UAC.
Можно вопрос? Все енто наскриненное из-под пользователя с ограниченными правами? А можешь там же, но из под администратора, желательно запуская cmd из Пуск\Выполнить. И результат - сюда, по каждому случаю, на обзор "жирным". Справишься?

Petya V4sechkin 26-12-2012 07:52 2053565

Цитата:

Цитата ShaddyR
Это может значить только то, что запрос переменных сделан из среды PE

Или PsExec с опцией -s (тоже от имени LocalService выполняется).
Как будто Limonica "прикинулась шлангом".

Iska 26-12-2012 08:30 2053573

Ага. Ну, вот и ответ (и «некоторые не русскоязычные ОС» тут не при чём).

У меня под XP, правда,
читать дальше »
исполняется именно от имени SYSTEM (NT AUTHORITY\SYSTEM). Профиль по «set» определяется как:
Код:

USERPROFILE=C:\Documents and Settings\LocalService
через «WScript.CreateObject("Shell.Application").NameSpace("shell:Profile").self.Path» как:
Код:

C:\WINDOWS\system32\config\systemprofile
В то же время, «WScript.CreateObject("WScript.Shell").SpecialFolders("Desktop")» даёт именно:
Код:

C:\Documents and Settings\LocalService\Рабочий стол


Осталось увидеть:
Цитата:

либо вместо имени юзера, выводится имя пк,
читать дальше »
Хотя, судя по тому, что не риторические вопросы:
Цитата:

Цитата Iska
Выбор наиболее предпочтительного зависит от предназначения. Опишите, где и как Вы собираетесь использовать имя пользователя. »

Цитата:

Цитата Iska
Limonica, я не верю в сказки. Что говорит по этому поводу служба поддержки? »

так же были обойдены молчанием, ответа не будет.

Limonica 26-12-2012 15:55 2053850

Я незнаю каким шлангом нужно прикинуться, чтобы такой простой вопрос расписывать на 2 страницы. В службу поддержки я так же не верю и не являюсь лицензионным пользователем.

Iska 26-12-2012 16:10 2053858

Цитата:

Цитата Limonica
…чтобы такой простой вопрос расписывать на 2 страницы. »

Limonica, Вы можете озвучить на него ответ? Я — нет.

Limonica 26-12-2012 16:34 2053873

А из этого сообщения следовало что вы всё знаете http://forum.oszone.net/post-2052886-5.html

Petya V4sechkin 26-12-2012 16:45 2053875

Limonica, у вас командная строка запущена от имени системной учетной записи LocalService. Никто не знает, зачем вы это делаете.

ShaddyR 27-12-2012 03:22 2054214

Limonica, на простой вопрос ответ дан в начале темы. А если у тебя непонятно что и как там запускается и ты в этом винишь локализацию ОС - тут не знаю, как надо разжиреть, чтобы слёту все тебе сказать. Может, ты сама найдешь, как ответить на этот же вопрос без использования API? Или тебе по-быстрому программку на Делфи сваять - ведь это тоже будет ответом на твой вопрос?

Кажися, нас троллят. Или это мне только кажется?

Limonica 27-12-2012 10:13 2054313

Вопрос решен, командная строка была запущенна от имени системы, от имени пользьзователя переменная %USERNAME% работает на всех системах (?), прошу прощение за своё разгильдяйство. Спасибо Петя Васечкин.


Насчет путей конечно можно снять видео, но гораздо проще вам поставить французкую или испанскую ОС на виртуальную машину и это не предмет обсуждения в данной теме, ссылку из гугла была приведена именно для того что бы показать что не только я тут выдумываю небывалые пути, аналогичным образом можете поискать и по другим путям, видимо Microsoft, испанцев и французев больше любит чем нас.


Время: 13:29.

Время: 13:29.
© OSzone.net 2001-