Вот несколько простых методов для вертикального выравнивания:
Это легко: установите высоту строки текстового элемента в равный таковому для контейнера
Doesn't work.
Абсолютно поместите внутренний div относительно его контейнера
This is positioned on the bottom
This is positioned in the middle
Чтобы заставить это работать правильно по всем направлениям, придется немного взломать CSS. К счастью, есть ошибка IE, которая работает в нашу пользу. Устанавливая top:50%
на контейнере и top:-50%
на внутреннем div, вы можете добиться того же результата. Мы можем комбинировать эти два варианта с помощью другой функции, IE не поддерживает: расширенные селектора CSS.
Works in everything!
Это решение требует немного более современного браузер, чем другие решения, поскольку он использует свойство transform: translateY
. ( http://caniuse.com/#feat=transforms2d )
Применение следующих трех строк CSS к элементу будет вертикально центрировать его внутри родителя независимо от высоты родительский элемент:
position: relative;
top: 50%;
transform: translateY(-50%);
В Win32 звоните GetTokenInformation, передавая маркерный дескриптор и TokenUser
постоянный. Это заполнит структура TOKEN_USER для Вас. Одним из элементов там является SID пользователя. Это - BLOB (двоичный файл), но можно превратить его в строку при помощи ConvertSidToStringSid.
Для овладения текущим маркерным дескриптором используйте OpenThreadToken или OpenProcessToken.
, Если Вы предпочитаете ATL, он имеет класс CAccessToken , который имеет все виды интересных вещей в нем.
.NET имеет эти Поток. Свойство CurrentPrinciple, которое возвращает ссылку IPrincipal. Можно получить SID:
IPrincipal principal = Thread.CurrentPrincipal;
WindowsIdentity identity = principal.Identity as WindowsIdentity;
if (identity != null)
Console.WriteLine(identity.User);
Также в.NET, можно использовать WindowsIdentity. GetCurrent (), который возвращает текущий идентификатор пользователя:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
if (identity != null)
Console.WriteLine(identity.User);
Это должно дать Вам, в чем Вы нуждаетесь:
Система использования. Безопасность. Принципал;
...
var sid = WindowsIdentity. GetCurrent ().User;
Свойство пользователя WindowsIdentity возвращает SID, на Документы MSDN
CodeProject имеет несколько различных методов, которые можно попробовать... Вы не упоминали, в каких языках Вы хотели решение.
, Если Вы хотите получить доступ к нему через пакетный файл или что-то, можно посмотреть как PsGetSid Sysinternals. Это переводит SIDs в имена и наоборот.
В C# можно использовать любой
using Microsoft.Win32.Security;
...
string username = Environment.UserName + "@" + Environment.GetEnvironmentVariable("USERDNSDOMAIN");
Sid sidUser = new Sid (username);
Или...
using System.Security.AccessControl;
using System.Security.Principal;
...
WindowsIdentity m_Self = WindowsIdentity.GetCurrent();
SecurityIdentifier m_SID = m_Self.Owner;");
Вы не указывали, какой язык Вы хотите. Но если Вы подлежите C#, эта статья предлагает обоим метод WMI, а также более быстрое (в то время как более подробный) метод, использующий API Win32.
http://www.codeproject.com/KB/cs/processownersid.aspx
, я не думаю, в настоящее время существует другой способ сделать это, не используя WMI или API Win32.
в cmd.exe
whoami / пользователь
при необходимости в нем программно, спросите более указанный