<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=94688&amp;view=findpost&amp;p=712390</guid>
        <pubDate>Wed, 11 May 2005 13:30:23 +0000</pubDate>
        <title>PID and SID процесса</title>
        <link>https://forum.sources.ru/index.php?showtopic=94688&amp;view=findpost&amp;p=712390</link>
        <description><![CDATA[Rouse_: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Как узнать SID(PSid) процесса имея PID процесса?</div></div><br>
Примерно так:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">unit Unit1;</div><div class="code_line">&nbsp;</div><div class="code_line">interface</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,</div><div class="code_line">&nbsp;&nbsp;Dialogs, StdCtrls;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TForm1 = class(TForm)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Button1: TButton;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Button1Click(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;PTokenUser = ^TTokenUser;</div><div class="code_line">&nbsp;&nbsp;TTokenUser = record</div><div class="code_line">&nbsp;&nbsp; &nbsp;User: array[0..0] of TSIDAndAttributes;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;procedure ConvertSidToStringSid(SID: PSID; var StringSid: LPSTR); stdcall;</div><div class="code_line">&nbsp;&nbsp; &nbsp;external advapi32 name &#39;ConvertSidToStringSidA&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Form1: TForm1;</div><div class="code_line">&nbsp;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">{$R *.dfm}</div><div class="code_line">&nbsp;</div><div class="code_line">function GetCurrentUserSID: String;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;TokenHandle: THandle;</div><div class="code_line">&nbsp;&nbsp;TokenInformationClass: TTokenInformationClass;</div><div class="code_line">&nbsp;&nbsp;TokenInformation: PTokenUser;</div><div class="code_line">&nbsp;&nbsp;ReturnLength: DWORD;</div><div class="code_line">&nbsp;&nbsp;StringSid: LPSTR;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := &#39;&#39;;</div><div class="code_line">&nbsp;&nbsp;if OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, TokenHandle) then</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;TokenInformationClass := TokenUser;</div><div class="code_line">&nbsp;&nbsp; &nbsp;GetTokenInformation(TokenHandle, TokenInformationClass, nil, 0, ReturnLength);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if GetLastError = ERROR_INSUFFICIENT_BUFFER then</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;TokenInformation := GetMemory(ReturnLength);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if TokenInformation &#60;&#62; nil then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if GetTokenInformation(TokenHandle, TokenInformationClass,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TokenInformation, ReturnLength, ReturnLength) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ConvertSidToStringSid(TokenInformation^.User[0].Sid, StringSid);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Result := StringSid;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;FreeMemory(TokenInformation);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp;CloseHandle(TokenHandle);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.Button1Click(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;ShowMessage(GetCurrentUserSID);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">end.</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script> <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2005-05-11T17:29:49+04:00">11.05.05, 13:29</time></span></span><br>
В данном примере GetCurrentProcess можно заменить (если имеешь PID) на<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hProcess := OpenProcess(PROCESS_QUERY_INFORMATION, True, PID);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if hProcess &#60;&#62; 0 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// теперь заменяй GetCurrentProcess значением из hProcess </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CloseHandle(hProcess);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div></ol></div></div></div></div>]]></description>
        <author>Rouse_</author>
        <category>Системные функции, WinAPI, работа с железом</category>
      </item>
	
      </channel>
      </rss>
	