|
Chyba bude v 90% připadů v připojovacim řetezci, poskytovatele ho asi moc nekontroluji a připadna chyba v ceste k databázovemu souboru nebo něco podobneho je zaskočí:)
************************************
|
Jde to snadněji, než se zdá i v komplikovaném systemu Windows NT s jeho LPC architekturou.
using System;
using System.Runtime.InteropServices;
public class PortAccess
{
(DllImport("inpout32.dll", EntryPoint="Out32"))
public static extern void Output(int adress, int value);
}
PortAccess.Output(888, 255);
************************************
|
Tak zkuste následujíci funkci:
DWORD GetPagesSize(DWORD PID)
{
MEMORY_BASIC_INFORMATION myMBI;
BOOL BAddrOK,FreeOK,ReservedOK;
DWORD ThisValueWillBeReturned=0;
HANDLE p=OpenProcess(PROCESS_ALL_ACCESS,false,PID);
for (DWORD CountForPages=0;VirtualQueryEx(p,(LPCVOID) (CountForPages+1),& myMBI,sizeof(MEMORY_BASIC_INFORMATION));CountForPages=(DWORD)myMBI.BaseAddress + myMBI.RegionSize + 1)
{
BAddrOK=((DWORD)myMBI.RegionSize);
FreeOK= (myMBI.State != MEM_FREE);
ReservedOK=((myMBI.State != MEM_RESERVE);
if ( BAddrOK && FreeOK && ReservedOK)
{
ThisValueWillBeReturned += myMBI.RegionSize;
}
}
return ThisValueWillBeReturned;
}
************************************
|
Ano ano, microsoft tady udělal malinkou chybičku. Register channel funguje správně, ale UnRegisterChannel vá zaregistrovaný kanál neodpojí ve chvili voláni funkce. Dokonce máme podezření, že to udělá a po ukončení threadu nebo programu. Prostě s tím musíte počítat a zařídit se jinak..... Bohuel
************************************
|
Za WaitForIdle přidejte: for(int i=0;i < 200;i++) { Thread.Sleep(100); Process proc = System.Diagnostics.Process.GetProcessById(HostProcess.Id); Trace.Write(proc.MainWindowHandle.ToString()+"\r\r"); if (proc.MainWindowHandle != IntPtr.Zero) break; } ************************************
|
Není to právě programátorská záležitost, ale řeení není úplně jednoduché, pokud nejste vyzbrojeni googlem a trpělivostí:) Musíte do Místních zásad zabezpečení, najít zde Místní zásady-Možnosti zabezpečení a tam položku Řízení uživatelských účtů:Zvýit oprávnění pouze u... nastavte na Zákázáno, hotovo ************************************
|
V IIS není pravděpodobně zprovozněn dotnet. Pokud není nainstalovaný, instalujte...jinak nápravu zjednáte pro Windows 7 v Programy a funkce kde vyhledáte funkce systému a zapnete asp.NET a dále pro vechny ostatní operační systémy zaregistrujete .NET pomocí příkazu na příkazové řádce: %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i %windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i %windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -i ************************************
|