<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[LsaAddAccountRights schlägt fehl]]></title><description><![CDATA[<p>Ich versuche mit obiger Funktion einer Benutzergruppe Privilegien zuzuordnen. Leider schlägt das mit der Fehlermeldung</p>
<blockquote>
<p>Ein angegebenes Recht ist nicht vorhanden</p>
</blockquote>
<p>fehl. Was bedeutet nun diese Fehlermeldung im einzelnen? Das poassiert sowohl bei schon vorhandenen Benutzergruppen, als auch bei selbst erstellten.</p>
<pre><code>function GrantPrivilege(const Server, user, privilege: string; bRemove: boolean): DWORD; 
var 
  sid               : PSID; 
  strSID            : PWideChar; 
  sidSize, sidNameUse: DWORD; 
  domainNameSize    : DWORD; 
  domainName        : array[0..DNLEN] of char; 
  attributes        : TLsaObjectAttributes; 
  policyHandle      : LSA_HANDLE; 
  lsaComputerName, rightsLsaUnicodeString: TLSAUnicodeStr; 
  status            : NTStatus; 

begin 
  result := 0; 
  sidSize := 65536; 
  GetMem(sid, sidSize); 
  domainNameSize := DNLEN + 1; 
  try 
    if LookupAccountName(PChar(Server), PChar(user), sid, sidSize, domainName, domainNameSize, sidNameUse) then 
    begin 
      lsaComputerName := TLsaUnicodeStr.CreateFromStr(Server); 
      try 
        FillChar(attributes, SizeOf(attributes), 0); 
        status := LsaOpenPolicy(lsaComputerName.value, attributes, POLICY_CREATE_ACCOUNT or POLICY_LOOKUP_NAMES, policyHandle); 
        if status = STATUS_SUCCESS then 
        try 
          rightsLsaUnicodeString := TLsaUnicodeStr.CreateFromStr(privilege); 
          try 
            if bRemove then 
              status := LsaRemoveAccountRights(PolicyHandle, sid, False, @rightsLsaUnicodeString.value, 1) 
            else 
              status := LsaAddAccountRights(PolicyHandle, sid, @rightsLsaUnicodeString.value, 1); 

            if status &lt;&gt; STATUS_SUCCESS then 
              result := (LsaNtStatusToWinError(status)); 
          finally 
            rightsLsaUnicodeString.Free 
          end 
        finally 
          LsaClose(PolicyHandle) 
        end 
      finally 
        lsaComputerName.Free 
      end 
    end 
  finally 
    FreeMem(sid) 
  end 
end;
</code></pre>
<p>Aufruf mit:</p>
<pre><code>procedure TForm1.Button3Click(Sender: TObject); 
var 
  err: DWORD; 
begin 
  err := GrantPrivilege('hal9000', 'Benutzer', 'SeBackupPrivilege', False); 
  if err &lt;&gt; 0 then 
    ShowMessage(SysErrorMessage(err)); 
end;
</code></pre>
<p>Gut, das ist jetzt Delphicode, aber am Code selber wird es wohl nicht liegen, er kompiliert und eine gültige SID und ein gültigs PolicyHandle bekomme ich auch. Desweiteren hat ein ähnlicher Code die selbe Fehlermeldung produziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/126474/lsaaddaccountrights-schlägt-fehl</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 20:20:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/126474.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Nov 2005 12:02:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to LsaAddAccountRights schlägt fehl on Tue, 15 Nov 2005 12:02:56 GMT]]></title><description><![CDATA[<p>Ich versuche mit obiger Funktion einer Benutzergruppe Privilegien zuzuordnen. Leider schlägt das mit der Fehlermeldung</p>
<blockquote>
<p>Ein angegebenes Recht ist nicht vorhanden</p>
</blockquote>
<p>fehl. Was bedeutet nun diese Fehlermeldung im einzelnen? Das poassiert sowohl bei schon vorhandenen Benutzergruppen, als auch bei selbst erstellten.</p>
<pre><code>function GrantPrivilege(const Server, user, privilege: string; bRemove: boolean): DWORD; 
var 
  sid               : PSID; 
  strSID            : PWideChar; 
  sidSize, sidNameUse: DWORD; 
  domainNameSize    : DWORD; 
  domainName        : array[0..DNLEN] of char; 
  attributes        : TLsaObjectAttributes; 
  policyHandle      : LSA_HANDLE; 
  lsaComputerName, rightsLsaUnicodeString: TLSAUnicodeStr; 
  status            : NTStatus; 

begin 
  result := 0; 
  sidSize := 65536; 
  GetMem(sid, sidSize); 
  domainNameSize := DNLEN + 1; 
  try 
    if LookupAccountName(PChar(Server), PChar(user), sid, sidSize, domainName, domainNameSize, sidNameUse) then 
    begin 
      lsaComputerName := TLsaUnicodeStr.CreateFromStr(Server); 
      try 
        FillChar(attributes, SizeOf(attributes), 0); 
        status := LsaOpenPolicy(lsaComputerName.value, attributes, POLICY_CREATE_ACCOUNT or POLICY_LOOKUP_NAMES, policyHandle); 
        if status = STATUS_SUCCESS then 
        try 
          rightsLsaUnicodeString := TLsaUnicodeStr.CreateFromStr(privilege); 
          try 
            if bRemove then 
              status := LsaRemoveAccountRights(PolicyHandle, sid, False, @rightsLsaUnicodeString.value, 1) 
            else 
              status := LsaAddAccountRights(PolicyHandle, sid, @rightsLsaUnicodeString.value, 1); 

            if status &lt;&gt; STATUS_SUCCESS then 
              result := (LsaNtStatusToWinError(status)); 
          finally 
            rightsLsaUnicodeString.Free 
          end 
        finally 
          LsaClose(PolicyHandle) 
        end 
      finally 
        lsaComputerName.Free 
      end 
    end 
  finally 
    FreeMem(sid) 
  end 
end;
</code></pre>
<p>Aufruf mit:</p>
<pre><code>procedure TForm1.Button3Click(Sender: TObject); 
var 
  err: DWORD; 
begin 
  err := GrantPrivilege('hal9000', 'Benutzer', 'SeBackupPrivilege', False); 
  if err &lt;&gt; 0 then 
    ShowMessage(SysErrorMessage(err)); 
end;
</code></pre>
<p>Gut, das ist jetzt Delphicode, aber am Code selber wird es wohl nicht liegen, er kompiliert und eine gültige SID und ein gültigs PolicyHandle bekomme ich auch. Desweiteren hat ein ähnlicher Code die selbe Fehlermeldung produziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918396</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Tue, 15 Nov 2005 12:02:56 GMT</pubDate></item><item><title><![CDATA[Reply to LsaAddAccountRights schlägt fehl on Tue, 15 Nov 2005 12:11:22 GMT]]></title><description><![CDATA[<p>Welche Funktion genau schlägt mit der obigen Meldung fehl? Kannst Du auch die Zahl posten? (ein deutscher Text ist immer schlecht)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918411</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Tue, 15 Nov 2005 12:11:22 GMT</pubDate></item><item><title><![CDATA[Reply to LsaAddAccountRights schlägt fehl on Tue, 15 Nov 2005 12:17:12 GMT]]></title><description><![CDATA[<p>Also fehlschlagen tut LsaAddAccountRights mit dem Code -1073741728 und umgewandelt mit LsaNtStatusToWinError ergibt das 1313, was &quot;Ein angegebenes Recht ist nicht vorhanden&quot; entspricht. Wie gesagt, die SID und das Policyhandle scheinen gültig zu sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/918418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/918418</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Tue, 15 Nov 2005 12:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to LsaAddAccountRights schlägt fehl on Wed, 16 Nov 2005 14:36:20 GMT]]></title><description><![CDATA[<p>Ich muss das leider noch mal nach oben holen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/919243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919243</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 16 Nov 2005 14:36:20 GMT</pubDate></item><item><title><![CDATA[Reply to LsaAddAccountRights schlägt fehl on Wed, 16 Nov 2005 14:37:32 GMT]]></title><description><![CDATA[<p>Mir fällt leider nichts ein, ausser dass Dir ein Recht fehlt um die Berechtigungen zu ändern... (welches das aber ist kann ich Dir nicht sagen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/919244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919244</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 16 Nov 2005 14:37:32 GMT</pubDate></item><item><title><![CDATA[Reply to LsaAddAccountRights schlägt fehl on Wed, 16 Nov 2005 14:48:26 GMT]]></title><description><![CDATA[<p>Hm, ja eventuell muss ich selbst als Admin erst noch das richtige Privileg aktivieren. Nur welches? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/919252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919252</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 16 Nov 2005 14:48:26 GMT</pubDate></item><item><title><![CDATA[Reply to LsaAddAccountRights schlägt fehl on Thu, 17 Nov 2005 00:59:16 GMT]]></title><description><![CDATA[<p>Problem gelöst, der fehler lag an einer ganz anderen Stelle im Code. besten Dank aber trotzdem für deine Mühe Jochen.</p>
<p>Das Ergebnis sollte sich gegen Ende des Monats in diesem <a href="http://xpusermanager.luckie-online.de" rel="nofollow">Programm</a> wieder finden, wenn alles gut geht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/919649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919649</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 17 Nov 2005 00:59:16 GMT</pubDate></item><item><title><![CDATA[Reply to LsaAddAccountRights schlägt fehl on Thu, 17 Nov 2005 07:29:29 GMT]]></title><description><![CDATA[<p>Luckie hast du dann auch noch c++ Code für uns <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/919715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919715</guid><dc:creator><![CDATA[Defcon7]]></dc:creator><pubDate>Thu, 17 Nov 2005 07:29:29 GMT</pubDate></item><item><title><![CDATA[Reply to LsaAddAccountRights schlägt fehl on Thu, 17 Nov 2005 09:56:54 GMT]]></title><description><![CDATA[<p>Leider nicht. Aber zu mindest C Code findest du im MSDN und PSDK. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/919859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/919859</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 17 Nov 2005 09:56:54 GMT</pubDate></item></channel></rss>