Альтернативный способ получить SID

    Сложилось ситуация где необходимо было получить Security Identifier (SID) винды без использования стороннего софта и VB. Через командную строку оказалось вполне реально, мы создали велосипед.

    @echo off
    dir "%SYSTEMROOT%\system32\appmgmt" /A>SID_DIR.txt
    findstr /R S-.* "SID_DIR.txt">SID_STR.txt
    for /f "tokens=5" %%A in (SID_STR.txt) do (@echo %%A>SID.txt)
    del /f /q SID_DIR.txt
    del /f /q SID_STR.txt


    Работает только в Win2k/XP/Vista.
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 25

      0
      А не проще посмотреть папку «C:\Windows\system32\appmgmt» вручную? и не таскать за собой батник,
      и в каких целях вам нужен SID в текстовом файле? тем более что файл получится не отформатирован.
        0
        Скажем вы хотите записать какую то информацию в реестр где в пути имеется СИД юзера.
        Передача в файл не имеет смысла, просто этим закончили логическую цепочку, но передать сид в переменную и вставить где это необходимо, дело техники. Натыкался что не мне одному надо. Например тут
          0
          Ну соответственно вы не знаете на каком компе будет запускаться батник, т.е. на вашей локальной машине это не имеет смысла.
            +1
            > но передать сид в переменную и вставить где это необходимо
            видимо только батником это не обойдется.
            Зачем же тогда использовать «батник»+«программа»?
            Рациональнее и быстрее будет просто «программа».
            Не вижу никакой надобности в таком методе, разве что просто ради интереса потестить батник.
              0
              Через батник можно записать информацию в реестр, далее мы передаём сид в переменную в пути реестра и изменяем то что нам нужно. Собственно никакой программы и нет :)
                0
                Само собой что можно через батник реестр править,
                но строку то достать вам теперь надо из «30.10.2009 22:51 S-1-5-21-4213386043-2108199273-415744165-500», а это в батнике больший геморой чем написать лубую прогу на VS/VB/Qt
                  0
                  Отпечатался :) VS=VC
                    0
                    Но пример выше это же и делает, а как я уже говорил, использовать VB не представлялось возможным :)
          0
          Данным способом имя пользователя с SID'ом не удастся сопоставить? (Если нужно не для текущего пользователя.)
          В своё время делал VBscript для WiX с этой целью.
            0
            Данным способом СИД с юзером вроде бы нельзя сопоставить, но к стати можно подумать в этом направлении
            +2
            Ну раз уж извращаться, так хоть по-человечески:

            for /d %i in (%systemroot%\system32\appmgmt\S-*) do echo %~ni
              0
              Хотя, если честно, не вижу смысла узнавать SID системы — он ведь является константой :)
                0
                Я чуть выше написал, если вам в реестр надо добавить инфу где по дороге в пути есть СИД то это достаточно простой вариант.
              0
              Хорошо бы еще был вариант, когда appmgmt нет. А что там должно быть, кстати?
                0
                Вот с 7кой и не работает потому что нету appmgmt, другой вариант это парсить реестр, но тут опять же дело техники)
                  0
                  А у меня есть в семерке. Но читать константу откуда-то — это все равно не круто.
                  Не вижу помех забить эту константу в батник при записи пути в реестр.
                    0
                    Наверное потому что у меня 64 бита, не смог найти, значит в 32х должно работать. Подскажите, как можно забить эту константу если не читать её откуда то? Я не нашел какой то переменной которая возвращает СИД, в серверных версиях винды где есть Resource Kit Tools это не проблема, но в xp/vista этого нет, я нашел решения только на VB, есть плюсы, но есть и минусы в моём случае.
                      0
                      SID системы всегда равен S-1-5-18.
                      Советую взглянуть на список известных SID-ов тут: support.microsoft.com/kb/243330
                        0
                        Спасибо, гляну. Но сид юзера всё же разный в итоге в любом случае.
                    0
                    Vista у меня.
                  –1
                  whoami /user — не то разве?
                  стандарстными средствами с XP точно
                    0
                    Хм, вы знаете, кажется мы всё же точно сделали велосипед. :) whoami /logonid действительно возвращает СИД ;) спасибо, учтём
                      0
                      Упс, поправочка, в ХП не пашет. Виста/7ка.
                        0
                        en.wikipedia.org/wiki/Whoami начиная с висты есть это команда, т.е. наш вариант всё же универсален :)
                          0
                          точно =) ну ладно тогда, ошибся

                  Only users with full accounts can post comments. Log in, please.