<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JS:не получается "убить" процесс терминального пользователя]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9260&amp;type=atom" />
	<updated>2014-02-15T07:46:06Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9260</id>
		<entry>
			<title type="html"><![CDATA[Re: JS:не получается "убить" процесс терминального пользователя]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80074#p80074" />
			<content type="html"><![CDATA[<p><strong>Rumata</strong>, в данном случае Вы не правы... транскрипция записи со скобками или без скобок, значения не имеет. Работает (или как в данном случае НЕ работает) и со скобками и без них.<br />По вашему <strong>alexii</strong> совету проанализировал код возврата операции</p><div class="codebox"><pre><code>i.Terminate</code></pre></div><p> и увидел, что он равен 2, т.е. доступ мне запрещён. Далее добавил строку:<br /></p><div class="codebox"><pre><code>SWbemLocator.Security_.privileges.addasstring(&quot;sedebugprivilege&quot;, true);</code></pre></div><p>и всё заработало как надо.<br />Спасибо за подсказку.</p>]]></content>
			<author>
				<name><![CDATA[im2002]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28063</uri>
			</author>
			<updated>2014-02-15T07:46:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80074#p80074</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS:не получается "убить" процесс терминального пользователя]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80072#p80072" />
			<content type="html"><![CDATA[<p><strong>im2002</strong>, привилегии нужны. Вы на MSDN были?<br /></p><div class="quotebox"><blockquote><p><strong>Remarks</strong><br />To terminate a process that you do not own, enable the SeDebugPrivilege privilege. In VBScript, you can enable this privilege with the following lines of code:<br /></p><div class="codebox"><pre><code>Set objLoc = createobject(&quot;wbemscripting.swbemlocator&quot;)
objLoc.Security_.privileges.addasstring &quot;sedebugprivilege&quot;, true</code></pre></div></blockquote></div><p>На JScript сами переводите.<br /></p><div class="quotebox"><blockquote><p>смотрю в лог, пишет сколько процессов с таким именем было остановлено,</p></blockquote></div><p>Он у Вас неверно считает. Из той же статьи:<br /></p><div class="quotebox"><blockquote><p><strong>Return Value</strong><br />Returns a value of 0 (zero) if the process was successfully terminated, and any other number to indicate an error.</p><p><strong>Return code</strong> <strong>Description </strong><br />0 Successful Completion<br />2 Access Denied<br />3 Insufficient Privilege<br />8 Unknown Failure<br />9 Path Not Found<br />21 Invalid Parameter</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-02-15T01:29:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80072#p80072</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS:не получается "убить" процесс терминального пользователя]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80069#p80069" />
			<content type="html"><![CDATA[<p>не вдаваясь в подробности<br /></p><div class="codebox"><pre><code>
    i.Terminate() // скобки!!!
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2014-02-14T17:53:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80069#p80069</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JS:не получается "убить" процесс терминального пользователя]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=80068#p80068" />
			<content type="html"><![CDATA[<p>Написал скрипт для убития процесов, которые остались от незавершённых терминальных сессий:<br /></p><div class="codebox"><pre><code>
var fsObj = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);    
var SWbemLocator = WScript.CreateObject(&quot;WbemScripting.SWbemLocator&quot;);        
var wbemFlagReturnImmediately = 0x10; 
var wbemFlagForwardOnly = 0x20; 

var strLoc = &quot;.&quot;;                    
var strFile = &quot;Y:\\Backup_1C\\log.txt&quot;;                    // файл для записи результата        
var strProcsToKill = &quot;1cv8.exe&quot;;                // приложение, которое будем останавливать

var SWbemServices = SWbemLocator.ConnectServer(strLoc, &quot;root\\cimv2&quot;, &quot;&quot;, &quot;&quot;);
                        
var SWbemObjectSet = SWbemServices.ExecQuery(&quot;SELECT * FROM Win32_Process WHERE Name = &quot; + &quot;\&quot;&quot; + strProcsToKill + &quot;\&quot;&quot;, &quot;WQL&quot;, wbemFlagReturnImmediately | wbemFlagForwardOnly); 
                        
en = new Enumerator(SWbemObjectSet), k = 0;

while (!en.atEnd())
    {
    i = en.item();                
    i.Terminate, k++;            
    en.moveNext();                
    }

var txtfl_ = fsObj.OpenTextFile(strFile, 8, true);    
if(k !== 0)
    {
    txtfl_.WriteLine(&quot;Было остановлено: &quot; + k + &quot;  процессов \&quot;1cv8.exe\&quot;&quot;);
    txtfl_.WriteLine(&quot;----------------------------------------------------&quot;);
    }
else
    {
    txtfl_.WriteLine(&quot;Активных процессов \&quot;1cv8.exe\&quot; в системе не обнаружено&quot;);
    txtfl_.WriteLine(&quot;----------------------------------------------------&quot;);
    }
txtfl_.close();                        
</code></pre></div><p>Пробую запустить этот скрипт от имени Администратора, правда также из терминальной сессии, смотрю в лог, пишет сколько процессов с таким именем было остановлено, на деле этого не происходит, процессы как висели в диспетчере так и висят... &quot;Руками&quot; убиваются нормально...&nbsp; <br />Думал скрипт кривой, заменил имя процесса на notepad.exe, скрипт его убил, правда этот notepad был запущен мною же... Чёт не пойму почему мне не удаётся остановить процессы, оставшиеся от терминальных пользователей?</p>]]></content>
			<author>
				<name><![CDATA[im2002]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28063</uri>
			</author>
			<updated>2014-02-14T17:26:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=80068#p80068</id>
		</entry>
</feed>
