Запуск привилегированной программой других программ, но с ограниченными правами - C#
Формулировка задачи:
Программа запущена от имени администратора, в ней присутствует запуск других программ, и по дефолту они запускаются тоже от админа, как этого избежать? То есть запустить программу с привилегиями обычного пользователя?
Мне кажется рыть нужно в сторону Verb, ну как с verb = runas в случае с запуском от админа
Решение задачи: «Запуск привилегированной программой других программ, но с ограниченными правами»
textual
Листинг программы
- [DllImport("native-helpers.dll", CallingConvention = CallingConvention.Cdecl)]
- static extern void ShellExecuteFromExplorer(
- [MarshalAs(UnmanagedType.LPWStr)] string file,
- [MarshalAs(UnmanagedType.LPWStr)] string arguments,
- [MarshalAs(UnmanagedType.LPWStr)] string directory,
- [MarshalAs(UnmanagedType.LPWStr)] string verb,
- WindowShowStyle windowStyle
- );
- enum WindowShowStyle
- {
- /// <summary>Hides the window and activates another window.</summary>
- /// <remarks>See SW_HIDE</remarks>
- Hide = 0,
- /// <summary>Activates and displays a window. If the window is minimized
- /// or maximized, the system restores it to its original size and
- /// position. An application should specify this flag when displaying
- /// the window for the first time.</summary>
- /// <remarks>See SW_SHOWNORMAL</remarks>
- ShowNormal = 1,
- /// <summary>Activates the window and displays it as a minimized window.</summary>
- /// <remarks>See SW_SHOWMINIMIZED</remarks>
- ShowMinimized = 2,
- /// <summary>Activates the window and displays it as a maximized window.</summary>
- /// <remarks>See SW_SHOWMAXIMIZED</remarks>
- ShowMaximized = 3,
- /// <summary>Maximizes the specified window.</summary>
- /// <remarks>See SW_MAXIMIZE</remarks>
- Maximize = 3,
- /// <summary>Displays a window in its most recent size and position.
- /// This value is similar to "ShowNormal", except the window is not
- /// actived.</summary>
- /// <remarks>See SW_SHOWNOACTIVATE</remarks>
- ShowNormalNoActivate = 4,
- /// <summary>Activates the window and displays it in its current size
- /// and position.</summary>
- /// <remarks>See SW_SHOW</remarks>
- Show = 5,
- /// <summary>Minimizes the specified window and activates the next
- /// top-level window in the Z order.</summary>
- /// <remarks>See SW_MINIMIZE</remarks>
- Minimize = 6,
- /// <summary>Displays the window as a minimized window. This value is
- /// similar to "ShowMinimized", except the window is not activated.</summary>
- /// <remarks>See SW_SHOWMINNOACTIVE</remarks>
- ShowMinNoActivate = 7,
- /// <summary>Displays the window in its current size and position. This
- /// value is similar to "Show", except the window is not activated.</summary>
- /// <remarks>See SW_SHOWNA</remarks>
- ShowNoActivate = 8,
- /// <summary>Activates and displays the window. If the window is
- /// minimized or maximized, the system restores it to its original size
- /// and position. An application should specify this flag when restoring
- /// a minimized window.</summary>
- /// <remarks>See SW_RESTORE</remarks>
- Restore = 9,
- /// <summary>Sets the show state based on the SW_ value specified in the
- /// STARTUPINFO structure passed to the CreateProcess function by the
- /// program that started the application.</summary>
- /// <remarks>See SW_SHOWDEFAULT</remarks>
- ShowDefault = 10,
- /// <summary>Windows 2000/XP: Minimizes a window, even if the thread
- /// that owns the window is hung. This flag should only be used when
- /// minimizing windows from a different thread.</summary>
- /// <remarks>See SW_FORCEMINIMIZE</remarks>
- ForceMinimized = 11
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д