Net и Server 2003

Тема в разделе ".NET", создана пользователем Pretorian, 14 ноя 2007.

Статус темы:
Закрыта.
  1. Pretorian

    Pretorian Гость

    Пытаюсь в приложении получить хендл консоли с помощью GetStdHandle, на XP все удачно, на Server 2003 приложение пишет ошибку. Кто сталкивался с этим и как это лечится, помоему где то стоит какой то запрет на выполнение GetStdHandle.
    Код (Text):
    using System;
    using System.Runtime.InteropServices;
    class Screen
    {
    [DllImport(”kernel32.dll”)]
    static extern bool SetConsoleTextAttribute(int hConsoleOutput, ushort wAttributes);
    [DllImport(”kernel32.dll”)]
    static extern int GetStdHandle(uint nStdHandle);
    const uint STD_OUTPUT_HANDLE = 0x0FFFFFFF5;
    static Screen()
    {
    output_handle = GetStdHandle(STD_OUTPUT_HANDLE);
    m_attributes = 7;
    }
    public static void PrintString(string str)
    {
    Console.Write(str);
    }
    public static ushort Attributes
    {
    get
    {
    return m_attributes;
    }
    set
    {
    m_attributes = value;
    SetConsoleTextAttribute(output_handle, value);
    }
    }
    private static ushort m_attributes;
    private static int  output_handle;
    }

    class Example_4
    {
    public static void Main()
    {
    for (ushort i = 1; i < 8; i++)
    {
    Screen.Attributes = i;
    Screen.PrintString(”Property Demo\n”);
    }
    }
    }
     
  2. Pretorian

    Pretorian Гость

    Вот:
    Unhandled Exception: System.TypeInitializationException: The type initializer fo

    r 'Screen' threw an exception. ---> System.Security.SecurityException: System.Se

    curity.Permissions.SecurityPermission

    at Screen..cctor()

    The type of the first permission that failed was:

    System.Security.Permissions.SecurityPermission

    The demand was for:

    <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Ve

    rsion=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

    version="1"

    Flags="UnmanagedCode"/>



    The Zone of the assembly that failed was:

    MyComputer

    --- End of inner exception stack trace ---

    at Screen.set_Attributes(UInt16 value)

    at Example_4.Main()
     
  3. Pasha

    Pasha Гость

    Для: Pretorian
    Если ошибка появляется при запуске из сети, перепиши на локальный диск и запускай оттуда.
     
  4. Pretorian

    Pretorian Гость

    Запускаю в терминале, по этому запуск производится локально для приложения. С локальным диском не пройдет, у меня ubuntu.
     
  5. Pasha

    Pasha Гость

    Для: Pretorian
    Ок, тогда так: ты запускаешь с локального диска терминального сервера? или в терминале заходишь на шару другой машины и запускаешь оттуда?
     
  6. Pretorian

    Pretorian Гость

    Обалдеть, действительно работает если с локального диска, а через шару на директорию локального диска не работает! Спасибо всем за помощь!
    А че это framework себя так ведет?
     
  7. Pasha

    Pasha Гость

    Для: Pretorian
    Секьюрити, все такое. Все, что не локальное должно быть урезано до невозможности.
    Когда-то в java для апплетов так закрутили гайки, что апплеты теперь ничего не могут делать, только немного графику показывать и на мышку реагировать. В .net решили на эти грабли на наступать, сделали безопасность настраиваемой. Теперь гайки можно откручивать. Т.е. можно явно указывать что при запуске приложения N подписанного ключем M с локальной машины можно делать X,Y,Z, при запуске из LAN можно X,Y, а при запуске через браузер можно только X.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей