Используя powershell, как я предоставляю “Вход в систему как сервис” в учетную запись?

В CSS2.1 элемент может содержать только не более одного псевдоэлемента любого типа в любой момент. (Это означает, что элемент может иметь как псевдо-элемент :before, так и :after - он просто не может иметь более одного типа.)

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

.circle.now:before {
    content: "Now";
    font-size: 19px;
    color: black;
}

Как вы можете видеть, вступает в силу только объявление content с наивысшим приоритетом (как упоминалось выше) остальные объявления отбрасываются, как в случае с любым другим свойством CSS.

Это поведение описано в разделе селекторов в CSS2.1 :

Псевдоэлементы ведут себя как реальные элементы в CSS с исключениями, описанными ниже, и в другом месте.

blockquote>

Это означает, что селекторы с псевдоэлементами работают точно так же, как селекторы для обычных элементов. Это также означает, что каскад должен работать одинаково. Как ни странно, CSS2.1, по-видимому, является единственной ссылкой; ни css3-selectors , ни css3-каскад не упоминают об этом вообще, и еще предстоит выяснить, будет ли оно разъяснено в будущей спецификации.

Если элемент может соответствовать более чем одному селектору с тем же псевдоэлементом, и вы хотите, чтобы все они каким-то образом применились, вам нужно будет создать дополнительные правила CSS с комбинированными селекторами, чтобы вы могли точно указать, что браузер должен делать в тех случаев. Я не могу представить полный пример, включая свойство content здесь, так как не ясно, должен ли сначала быть символ или текст. Но селектор, который вам нужен для этого комбинированного правила, является либо .circle.now:before, либо .now.circle:before - какой бы селектор вы ни выбрали, является личным предпочтением, так как оба селектора эквивалентны, это только значение свойства content, которое вам нужно будет определить самостоятельно.

Если вам все еще нужен конкретный пример, см. мой ответ на этот аналогичный вопрос .

Унаследованная спецификация содержимого css3 содержит раздел о вставка нескольких ::before и ::after псевдоэлементов с использованием нотации, совместимой с каскадом CSS2.1, но обратите внимание, что этот конкретный документ устарел - он не обновлялся с 2003 года, и никто не имеет реализовала эту функцию в последнее десятилетие. Хорошей новостью является то, что заброшенный документ активно переписывается под видом css-content-3 и css-pseudo-4 . Плохая новость заключается в том, что множественная функция псевдоэлементов нигде не может быть найдена ни в одной спецификации, по-видимому, опять-таки, из-за отсутствия интереса к исполнителям.

18
задан Jesse Weigert 24 November 2008 в 10:23
поделиться

3 ответа

Вот ссылка, которую Вы могли также сделать в PSH. http://www.derkeiler.com/Newsgroups/microsoft.public.windowsxp.security_admin/2003-12/2865.html.

Проблема состоит в том, что нет действительно никаких общедоступных API для управления этими настройками, таким образом, Вы немного застреваете с помощью инструментов командной строки, обеспеченных в ResKits.

5
ответ дан 30 November 2019 в 07:56
поделиться

PowerShell не имеет никаких собственных средств выполнения этого, что означает, что Вы, вероятно, посмотрели бы или на WMI или на ADSI - Вы, более вероятно, найдете примеры в VBScript, который был вокруг дольше, хотя лично я не думаю, что когда-либо выяснял, как программно присвоить пользовательские права. Не означает, что это не может быть сделано, тем не менее, но Вы будете, вероятно, смотреть вне области PowerShell конкретно.

1
ответ дан 30 November 2019 в 07:56
поделиться

Решение, не импортируя целый дб

function setSecurityPolicy {
Param
(
    [Parameter(Mandatory=$true, Position=0)]
    [string] $username,
    [Parameter(Mandatory=$true, Position=1)]
    [string] $securityField
)
$sid;
if($username -like "*\*"){
    $user = $username.split('\')
    $domain=$user[0]
    $usernametemp=$user[1]
    $sid=(get-wmiobject Win32_useraccount -filter "name='$usernametemp' and Domain='$domain'").SID
} else {
    $sid=(get-wmiobject Win32_useraccount -filter "name='$username' and Domain='$($env:COMPUTERNAME)'").SID
}
if(-not($sid)){
    try{
        $sid= (Get-Localgroup "$username").SID.VALUE
    } catch{

    }
}

if(-not($sid)) {
    $Host.UI.WriteErrorLine("setSecurityPolicy error : Account $username not found!")
    exit 1
}
$tmp = [System.IO.Path]::GetTempFileName()
secedit.exe /export /cfg "$tmp" | Out-Null

$currentSetting = Select-String -Pattern "$securityField = (.*)" -path $tmp | select -Expand Matches |  % { 

Решение, не импортируя целый дб

[110].Groups[1].Value } remove-item $tmp -Force if($currentSetting -notlike "*$sid*" ){ Write-Host "Modify Setting ""$securityField""" if( [string]::IsNullOrEmpty($currentSetting) ) { $currentSetting = "*$sid" } else { $currentSetting = "*$sid,$currentSetting" } $outfile = @" [Unicode] Unicode=yes [Version] signature="`$CHICAGO`$" Revision=1 [Privilege Rights] $securityField = $currentSetting "@ $tmp2 = [System.IO.Path]::GetTempFileName() Write-Host "Import new settings to Local Security Policy" $outfile | Set-Content -Path $tmp2 -Encoding Unicode -Force try { secedit.exe /configure /db "secedit.sdb" /cfg "$tmp2" /areas USER_RIGHTS } finally { remove-item $tmp2 -Force } } }
0
ответ дан 30 November 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: