Diskuze: Process.GetProcessesByName
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 16 zpráv z 16.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Odpověděl jsi si sám, problém bude v tom, že z dané sítě se k počítači se jménem "Pc" nemůže připojit. očividně v jiné síti kde to funguje, tak takový počítač existuje a v té druhé ne.
Právě že v síti existuje.
Ve stejné aplikaci používám spojení s SQL serverem Pc\SqlServer a to
funguje.
Co když zkusíš použít přímo IP na místo jména?
Pre pomoc s vyriesenim problemu by sa hodila vynimka, ktoru ti to vrati.
Moj predpoklad je, ze sa k vziadelemu pc nepripojis kvoli credentials.
Psal jsi v jiné síti funguje, v které? Hádám, že v lokální s počítačem "Pc" to funguje a v jiné nefunguje nebo se pletu?
Aplikaci distribuji do 2 kanceláří.
V jedné kanceláři to funguje, ve druhé nikoli.
Text chyby je přímo: Ke vzdálenému počítači se nelze připojit.
Kód chyby bohužel teď zjistit nemůžu.
Co firewall? Zkusil bych ho na test úplně vypnout
Firewall zkusím vypnout.
Bohužel testovat budu moct pravděpodobně až zítra
No jasně, ale v které síti je "Pc". Hádám, že celý problém bude v tom, že v jedné síti se na ten počítač normálně připojíš a z druhé síti ne, protože ho nevidíš jelikož to není už lokální síť.
Asi si úplně nerozumíme.
V každé z kanceláří (sítí) zkouším načíst proces na jiném Pc, který
je součástí lokální sítě kanceláře.
Není to tak, že bych se zkoušel ze dvou kanceláří spojit s jedním
konkrétním Pc.
No to ze stringu "Pc" jsem moc nepochopil, v tom případě bych hledal problém v blokaci komunikace na konkrétním PC no jako psal Luboš firewall apod.
Ještě jedna věc - pingnout ten počítač jde?
1) Je mozne skusit aplikaciu spustit z kodu? Debugovat?
Možné to bohužel není.
2) Co pripadna chyba v EventLogu na zdrojovom PC?
V EventLogu nic
3) Nastavenie firewallu?
Povolení výjimky pro aplikaci nepomohlo
4) Hostname prislusneho PC je spravne vyplneny?
Hostname je v pořádku
5) Co sluzba "Remote Registry Service", bezi?
Neběžela, ale její spuštění nepomohlo
6) Pingnout na ten počítač
Pingnout jde
Napadlo mě vyzkoušet cmd příkaz tasklist a konečně se objevila hodnotná informace Zadejte heslo. Takže problém byl v tom že bylo potřeba zadat přihlašovací údaje uživatele, pod kterým proces Proc na počítači Pc běží. Bohužel jednoduchá metoda Process.GetProcessesByName() zadání uživatele a hesla neumožňuje takže jsem musel využít následující metodu
private bool BeziProces(string Pocitac, string Proces, string Uzivatel, string Heslo)
{
ManagementScope Scope;
ConnectionOptions Conn = new ConnectionOptions();
if (String.IsNullOrEmpty(Pocitac)
|| Pocitac.ToLower()=="localhost"
|| Pocitac.ToLower() == Environment.MachineName.ToLower())
{
//Pokud hledám na stejném PC
Conn = null;
}
else
{
//Pokud hledám na PC v síti
Conn.Username = Uzivatel;
Conn.Password = Heslo;
}
Scope = new ManagementScope(String.Format("\\\\{0}\\root\\CIMV2", Pocitac), Conn);
Scope.Connect();
ObjectQuery Query = new ObjectQuery("SELECT * FROM Win32_Process Where Name='" + Proces + "'");
ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Scope, Query);
if (Searcher.Get().Count > 0)
return true;
else
return false;
}
Poté se ještě se objevila chyba Server RPC není k dispozici, a
tu vyřešilo následující nastavení
-> Spustit Group Policy Object Editor
-> Computer Configuration
-> Administrative Templates
-> Network
-> Network Connections
-> Windows Firewall
-> Domain Profile (standard profile - podle potřeby)
-> povolit Allow Remote Administration Exception a Allow File and Printer
Sharing exception
Zobrazeno 16 zpráv z 16.