This commit is contained in:
STAM 2020-02-18 00:32:32 +03:00
parent 0d234d54f8
commit 4be72f8648
4 changed files with 103 additions and 32 deletions

View File

@ -11,18 +11,25 @@ using System.Windows.Forms;
namespace windows2go.switcher {
public partial class FormMain : Form {
RegistryKey key = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Default);
const string keyName ="HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control";
public FormMain() {
InitializeComponent();
if (!UACSecurity.IsAdmin()) {
UACSecurity.AddShieldToButton(buttonSetNormal);
UACSecurity.AddShieldToButton(buttonSetPortable);
} else
this.Text += " (Administrator)";
UACSecurity.AddShieldToButton(buttonSetNormal);
UACSecurity.AddShieldToButton(buttonSetPortable);
// if (!UACSecurity.IsAdmin()) {
//
//
// } else
// this.Text += " (Administrator)";
}
bool PortableState = false;
bool KeyExists = false;
bool unExpected=false;
bool PortableState;
bool KeyExists;
bool unExpected;
private void FormMain_Load(object sender, EventArgs e) {
FullRegistryCheck();
@ -48,9 +55,9 @@ namespace windows2go.switcher {
}
private void GetState() {
RegistryKey key = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
key = key.OpenSubKey(@"SYSTEM\CurrentControlSet\Control");
RegistryKey key = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
key = key.OpenSubKey(@"SYSTEM\CurrentControlSet\Control", true);
//check for exists "PortableOperatingSystem"
if (key != null) {
switch (key.GetValue("PortableOperatingSystem")) {
@ -95,32 +102,17 @@ namespace windows2go.switcher {
}
private void buttonSetNormal_Click(object sender, EventArgs e) {
if (UACSecurity.IsAdmin()) {
switch (unExpected) {
case true:
MessageBox.Show("oh no.", "");
FullRegistryCheck();
break;
Registry.SetValue(keyName, "PortableOperatingSystem", 0);
FullRegistryCheck();
case false:
MessageBox.Show("yay.", "");
FullRegistryCheck();
break;
}
} else {
UACSecurity.RestartElevated();
}
}
private void buttonSetPortable_Click(object sender, EventArgs e) {
if (UACSecurity.IsAdmin()) {
MessageBox.Show("okay.", "");
FullRegistryCheck();
} else {
UACSecurity.RestartElevated();
}
Registry.SetValue(keyName, "PortableOperatingSystem", 1);
}
}

View File

@ -1,5 +1,4 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Specifying requestedExecutionLevel element will disable file and registry virtualization.
Remove this element if your application requires this virtualization for backwards
compatibility.
-->
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- A list of the Windows versions that this application has been tested on
and is designed to work with. Uncomment the appropriate elements
and Windows will automatically select the most compatible environment. -->
<!-- Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
<!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
-->
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
</assembly>

View File

@ -35,6 +35,9 @@
<PropertyGroup>
<ApplicationIcon>windows.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
@ -70,6 +73,7 @@
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="app.manifest" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>