Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запуск программы от имени юзера

10K
02 марта 2006 года
angor
10 / / 06.10.2005
У меня есть программа, работающая с базой занных, заданной через сетевой путь \\server\folder\bd.mdb (к сожалению аксесс). Я создал юзера и на уровне NTFS и сетевого доступа выставил для него полные права. Как сделать так, что программа, которая работает с базой, запускалась от имени этого юзера?

Комманда runas мне не подходит, потому что она не дает возможности ввести пароль автоматически. Мне нужно, чтобы юзеры, рыботающие с прогой, не могли переписать базу данных (путь к ней они знают), только программы должна знать пароль пользователя, от имени которого она запускается.

Возможно ли это?

Если нет, то как по-другому можно обеспечить безопастность базы данных, чтобы ее не можно было переписать?

Насколько сложно сломать пароль аксесса?
1.9K
03 марта 2006 года
mail0
137 / / 09.05.2005
Цитата:
Originally posted by angor
У меня есть программа, работающая с базой занных, заданной через сетевой путь \\server\folder\bd.mdb (к сожалению аксесс). Я создал юзера и на уровне NTFS и сетевого доступа выставил для него полные права. Как сделать так, что программа, которая работает с базой, запускалась от имени этого юзера?

Комманда runas мне не подходит, потому что она не дает возможности ввести пароль автоматически. Мне нужно, чтобы юзеры, рыботающие с прогой, не могли переписать базу данных (путь к ней они знают), только программы должна знать пароль пользователя, от имени которого она запускается.

Возможно ли это?

Если нет, то как по-другому можно обеспечить безопастность базы данных, чтобы ее не можно было переписать?

Насколько сложно сломать пароль аксесса?



Придётся импортировать CreateProcessAsUser,
И к ней впридачу LogonUser + описать кучку структур...

273
05 марта 2006 года
3A3-968M
1.2K / / 22.12.2005
Можешь попробовать через ODBC
1.9K
13 марта 2006 года
mail0
137 / / 09.05.2005
Вот что нашёл:
Код:
namespace RunAs
{

    class Class1
    {
        public const UInt32 Infinite = 0xffffffff;
        public const Int32      Startf_UseStdHandles = 0x00000100;
        public const Int32      StdOutputHandle = -11;
        public const Int32      StdErrorHandle = -12;

        [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
        public struct StartupInfo
        {
            public int    cb;
            public String reserved;
            public String desktop;
            public String title;
            public int    x;
            public int    y;
            public int    xSize;
            public int    ySize;
            public int    xCountChars;
            public int    yCountChars;
            public int    fillAttribute;
            public int    flags;
            public UInt16 showWindow;
            public UInt16 reserved2;
            public byte   reserved3;
            public IntPtr stdInput;
            public IntPtr stdOutput;
            public IntPtr stdError;
        }

        internal struct ProcessInformation
        {
            public IntPtr process;
            public IntPtr thread;
            public int    processId;
            public int    threadId;
        }



        [DllImport("advapi32.dll", SetLastError=true, CharSet=CharSet.Unicode)]
        public static extern bool CreateProcessWithLogonW(
            String userName,
            String domain,
            String password,
            UInt32 logonFlags,
            String applicationName,
            String commandLine,
            UInt32 creationFlags,
            UInt32 environment,
            String currentDirectory,
            ref   StartupInfo startupInfo,
            out  ProcessInformation processInformation);

        [DllImport("kernel32.dll", SetLastError=true)]
        public static extern bool GetExitCodeProcess(IntPtr process, ref UInt32 exitCode);

        [DllImport("Kernel32.dll", SetLastError=true)]
        public static extern UInt32 WaitForSingleObject(IntPtr handle, UInt32 milliseconds);

        [DllImport("Kernel32.dll", SetLastError=true)]
        public static extern IntPtr GetStdHandle(IntPtr handle);

        [DllImport("Kernel32.dll", SetLastError=true)]
        public static extern bool CloseHandle(IntPtr handle);

        [STAThread]
        static void Main(string[] args)
        {
            StartupInfo startupInfo = new StartupInfo();
            startupInfo.reserved = null;
            startupInfo.flags &= Startf_UseStdHandles;
            startupInfo.stdOutput = (IntPtr)StdOutputHandle;
            startupInfo.stdError = (IntPtr)StdErrorHandle;

            UInt32 exitCode = 123456;
            ProcessInformation processInfo = new ProcessInformation();

            String command = @"c:\windows\notepad.exe";
            String user    = "administrator";
            String domain  = System.Environment.MachineName;
            String password = "Blank";
            String currentDirectory = System.IO.Directory.GetCurrentDirectory();

            try
            {
                CreateProcessWithLogonW(
                    user,
                    domain,
                    password,
                    (UInt32) 1,
                    command,
                    command,
                    (UInt32) 0,
                    (UInt32) 0,
                    currentDirectory,
                    ref startupInfo,
                    out processInfo);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

            Console.WriteLine("Running ...");
            WaitForSingleObject(processInfo.process, Infinite);
            GetExitCodeProcess(processInfo.process, ref exitCode);

            Console.WriteLine("Exit code: {0}", exitCode);

            CloseHandle(processInfo.process);
            CloseHandle(processInfo.thread);
        }
    }
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог