<?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=94676&amp;view=findpost&amp;p=715025</guid>
        <pubDate>Fri, 13 May 2005 11:03:08 +0000</pubDate>
        <title>PID and SID процесса</title>
        <link>https://forum.sources.ru/index.php?showtopic=94676&amp;view=findpost&amp;p=715025</link>
        <description><![CDATA[Rouse_: <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;AcctName: array [0..MAXCHAR - 1] of Char;</div><div class="code_line">&nbsp;&nbsp;DomainName:array [0..MAXCHAR - 1] of Char;</div><div class="code_line">...</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if LookupAccountSid(nil,TokenInformation^.User[0].Sid,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AcctName, dwAcctName, DomainName, dwDomainName, eUse)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;eUse := 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//AcctName &nbsp; := GetMemory(dwAcctName + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dwAcctName := MAXCHAR;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//DomainName := GetMemory(dwDomainName + 1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dwDomainName := MAXCHAR;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if LookupAccountSid(nil,TokenInformation^.User[0].Sid,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AcctName, dwAcctName, DomainName, dwDomainName, eUse) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Result := StrPas(AcctName)+&#39; &#39;+StrPas(DomainName)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RaiseLastOSError;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Rouse_</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=94676&amp;view=findpost&amp;p=714994</guid>
        <pubDate>Fri, 13 May 2005 10:41:43 +0000</pubDate>
        <title>PID and SID процесса</title>
        <link>https://forum.sources.ru/index.php?showtopic=94676&amp;view=findpost&amp;p=714994</link>
        <description><![CDATA[n0wheremany: Задача найти имя пользователя по пиду.<br>
<br>
Делаю всё вроде правильно а не получается - какието каракули выводит....<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">function GetUserName(PID:DWord):string;</div><div class="code_line">// This procedure for WinXP</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp; &nbsp;PTokenUser = ^TTokenUser;</div><div class="code_line">&nbsp;&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; &nbsp;end;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;hProcess,</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;</div><div class="code_line">&nbsp;&nbsp;AcctName: PChar;</div><div class="code_line">&nbsp;&nbsp;DomainName:PChar;</div><div class="code_line">&nbsp;&nbsp;dwAcctName:Cardinal;</div><div class="code_line">&nbsp;&nbsp;dwDomainName:DWORD;</div><div class="code_line">&nbsp;&nbsp;eUse: SID_NAME_USE;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Result := &#39;&#39;;</div><div class="code_line">&nbsp;&nbsp;hProcess := OpenProcess(PROCESS_QUERY_INFORMATION, True, PID);</div><div class="code_line">&nbsp;&nbsp;if hProcess &#60;&#62; 0 then</div><div class="code_line">&nbsp;&nbsp;try</div><div class="code_line">&nbsp;&nbsp; if OpenProcessToken(hProcess, 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; if LookupAccountSid(nil,TokenInformation^.User[0].Sid,AcctName,dwAcctName,DomainName,dwDomainName,eUse)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;then begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AcctName &nbsp; := GetMemory(dwAcctName+1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DomainName := GetMemory(dwDomainName+1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if LookupAccountSid(nil,TokenInformation^.User[0].Sid,AcctName,dwAcctName,DomainName,dwDomainName,eUse)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result := StrPas(AcctName)+&#39; &#39;+StrPas(DomainName);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FreeMemory(AcctName);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FreeMemory(DomainName);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; end;</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">&nbsp;&nbsp;finally</div><div class="code_line">&nbsp;&nbsp; CloseHandle(hProcess);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div>]]></description>
        <author>n0wheremany</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=94676&amp;view=findpost&amp;p=712386</guid>
        <pubDate>Wed, 11 May 2005 13:26:47 +0000</pubDate>
        <title>PID and SID процесса</title>
        <link>https://forum.sources.ru/index.php?showtopic=94676&amp;view=findpost&amp;p=712386</link>
        <description><![CDATA[Rouse_: Примерно так:<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> <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-11T13:29:49+00: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>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=94676&amp;view=findpost&amp;p=712275</guid>
        <pubDate>Wed, 11 May 2005 12:26:08 +0000</pubDate>
        <title>PID and SID процесса</title>
        <link>https://forum.sources.ru/index.php?showtopic=94676&amp;view=findpost&amp;p=712275</link>
        <description><![CDATA[n0wheremany: Как узнать SID(PSid) процесса имея PID процесса...]]></description>
        <author>n0wheremany</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      </channel>
      </rss>
	