implement runas into a command which is stupid why would anyone do this

yeah.
This commit is contained in:
Jariel Que 2021-05-17 14:04:59 +08:00
parent 044e050840
commit bddc69a468
No known key found for this signature in database
GPG key ID: 524DC6647C09B7E8
34 changed files with 385 additions and 0 deletions

13
.idea/.idea.winsudo/.idea/.gitignore vendored Normal file
View file

@ -0,0 +1,13 @@
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/contentModel.xml
/projectSettingsUpdater.xml
/.idea.winsudo.iml
/modules.xml
# Datasource local storage ignored files
/../../../../../../../../:\Users\Jariel\RiderProjects\winsudo\.idea\.idea.winsudo\.idea/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ContentModelUserStore">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="RIDER_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$/../.." />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

16
winsudo.sln Normal file
View file

@ -0,0 +1,16 @@

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "winsudo", "winsudo\winsudo.csproj", "{C8084AC9-5619-4470-9EEA-3EE2BCAEA762}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C8084AC9-5619-4470-9EEA-3EE2BCAEA762}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C8084AC9-5619-4470-9EEA-3EE2BCAEA762}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C8084AC9-5619-4470-9EEA-3EE2BCAEA762}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C8084AC9-5619-4470-9EEA-3EE2BCAEA762}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

73
winsudo/Program.cs Normal file
View file

@ -0,0 +1,73 @@
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
namespace winsudo
{
class Program
{
[DllImport("shell32.dll")]
internal static extern bool IsUserAnAdmin();
static void Main(string[] args)
{
String userName = Environment.UserName;
string path = Directory.GetCurrentDirectory();
if (args.Length == 0)
{
System.Console.WriteLine("winsudo: no argument provided");
}
else
{
if (!Elevate(System.Reflection.Assembly.GetExecutingAssembly().Location))
{
System.Console.WriteLine("winsudo: elevation prompt refused.");
}
System.Console.Write("[winsudo] password for " + userName + ": ");
string password = null;
while (true)
{
var key = System.Console.ReadKey(true);
if (key.Key == ConsoleKey.Enter)
break;
password += key.KeyChar;
}
if (password == "workinprogress")
{
System.Console.WriteLine("");
System.Console.WriteLine("winsudo: requesting elevation...");
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe";
startInfo.Arguments = @"/c " + args[0];
process.StartInfo = startInfo;
process.Start();
}
else
{
System.Console.WriteLine("");
System.Console.WriteLine("winsudo: incorrect password.");
}
}
}
private static bool Elevate(string processPath)
{
bool elevated = false;
if (!IsUserAnAdmin())
{
elevated = true;
ProcessStartInfo procInfo = new ProcessStartInfo(processPath);
procInfo.WindowStyle = ProcessWindowStyle.Hidden;
procInfo.UseShellExecute = true;
procInfo.Verb = "runas";
Process.Start(procInfo);
}
return elevated;
}
}
}

Binary file not shown.

View file

@ -0,0 +1,23 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v5.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v5.0": {
"winsudo/1.0.0": {
"runtime": {
"winsudo.dll": {}
}
}
}
},
"libraries": {
"winsudo/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,8 @@
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\Jariel\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\Jariel\\.nuget\\packages"
]
}
}

View file

@ -0,0 +1,9 @@
{
"runtimeOptions": {
"tfm": "net5.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "5.0.0"
}
}
}

View file

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v5.0", FrameworkDisplayName = "")]

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,22 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("winsudo")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("winsudo")]
[assembly: System.Reflection.AssemblyTitleAttribute("winsudo")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View file

@ -0,0 +1 @@
443e2cee3a455b0db9ebd40803db67ccfeb11cce

View file

@ -0,0 +1,8 @@
is_global = true
build_property.TargetFramework = net5.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.PublishSingleFile =
build_property.IncludeAllContentForSelfExtract =
build_property._SupportedPlatformList = Android,iOS,Linux,macOS,Windows

Binary file not shown.

View file

@ -0,0 +1 @@
d95de241f918f3db61ad8632f2af7dad2ec667e1

View file

@ -0,0 +1,16 @@
C:\Users\Jariel\RiderProjects\winsudo\winsudo\bin\Debug\net5.0\winsudo.exe
C:\Users\Jariel\RiderProjects\winsudo\winsudo\bin\Debug\net5.0\winsudo.deps.json
C:\Users\Jariel\RiderProjects\winsudo\winsudo\bin\Debug\net5.0\winsudo.runtimeconfig.json
C:\Users\Jariel\RiderProjects\winsudo\winsudo\bin\Debug\net5.0\winsudo.runtimeconfig.dev.json
C:\Users\Jariel\RiderProjects\winsudo\winsudo\bin\Debug\net5.0\winsudo.dll
C:\Users\Jariel\RiderProjects\winsudo\winsudo\bin\Debug\net5.0\ref\winsudo.dll
C:\Users\Jariel\RiderProjects\winsudo\winsudo\bin\Debug\net5.0\winsudo.pdb
C:\Users\Jariel\RiderProjects\winsudo\winsudo\obj\Debug\net5.0\winsudo.csprojAssemblyReference.cache
C:\Users\Jariel\RiderProjects\winsudo\winsudo\obj\Debug\net5.0\winsudo.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\Jariel\RiderProjects\winsudo\winsudo\obj\Debug\net5.0\winsudo.AssemblyInfoInputs.cache
C:\Users\Jariel\RiderProjects\winsudo\winsudo\obj\Debug\net5.0\winsudo.AssemblyInfo.cs
C:\Users\Jariel\RiderProjects\winsudo\winsudo\obj\Debug\net5.0\winsudo.csproj.CoreCompileInputs.cache
C:\Users\Jariel\RiderProjects\winsudo\winsudo\obj\Debug\net5.0\winsudo.dll
C:\Users\Jariel\RiderProjects\winsudo\winsudo\obj\Debug\net5.0\ref\winsudo.dll
C:\Users\Jariel\RiderProjects\winsudo\winsudo\obj\Debug\net5.0\winsudo.pdb
C:\Users\Jariel\RiderProjects\winsudo\winsudo\obj\Debug\net5.0\winsudo.genruntimeconfig.cache

Binary file not shown.

View file

@ -0,0 +1 @@
c1e87e7ca091d27089e668593710a28cd905ce9c

Binary file not shown.

View file

@ -0,0 +1,67 @@
{
"version": 3,
"targets": {
"net5.0": {}
},
"libraries": {},
"projectFileDependencyGroups": {
"net5.0": []
},
"packageFolders": {
"C:\\Users\\Jariel\\.nuget\\packages\\": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Jariel\\RiderProjects\\winsudo\\winsudo\\winsudo.csproj",
"projectName": "winsudo",
"projectPath": "C:\\Users\\Jariel\\RiderProjects\\winsudo\\winsudo\\winsudo.csproj",
"packagesPath": "C:\\Users\\Jariel\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Jariel\\RiderProjects\\winsudo\\winsudo\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\Jariel\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net5.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net5.0": {
"targetAlias": "net5.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net5.0": {
"targetAlias": "net5.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\5.0.102\\RuntimeIdentifierGraph.json"
}
}
}
}

View file

@ -0,0 +1,8 @@
{
"version": 2,
"dgSpecHash": "gCMDnNaVx4sA9aD8wsCWigKM0SC1ZY3PKRgyQKM+wrDDBnd4iFUlpFDH/g/Pcr1EcanjpzyXYmxZsm2mpchVbQ==",
"success": true,
"projectFilePath": "C:\\Users\\Jariel\\RiderProjects\\winsudo\\winsudo\\winsudo.csproj",
"expectedPackageFiles": [],
"logs": []
}

View file

@ -0,0 +1 @@
"version":"1.0.0","restore":{"projectUniqueName":"C:\\Users\\Jariel\\RiderProjects\\winsudo\\winsudo\\winsudo.csproj","projectName":"winsudo","projectPath":"C:\\Users\\Jariel\\RiderProjects\\winsudo\\winsudo\\winsudo.csproj","outputPath":"C:\\Users\\Jariel\\RiderProjects\\winsudo\\winsudo\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net5.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net5.0":{"targetAlias":"net5.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net5.0":{"targetAlias":"net5.0","imports":["net461","net462","net47","net471","net472","net48"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\5.0.102\\RuntimeIdentifierGraph.json"}}

View file

@ -0,0 +1 @@
16212266495191073

View file

@ -0,0 +1,62 @@
{
"format": 1,
"restore": {
"C:\\Users\\Jariel\\RiderProjects\\winsudo\\winsudo\\winsudo.csproj": {}
},
"projects": {
"C:\\Users\\Jariel\\RiderProjects\\winsudo\\winsudo\\winsudo.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Jariel\\RiderProjects\\winsudo\\winsudo\\winsudo.csproj",
"projectName": "winsudo",
"projectPath": "C:\\Users\\Jariel\\RiderProjects\\winsudo\\winsudo\\winsudo.csproj",
"packagesPath": "C:\\Users\\Jariel\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Jariel\\RiderProjects\\winsudo\\winsudo\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\Jariel\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net5.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net5.0": {
"targetAlias": "net5.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net5.0": {
"targetAlias": "net5.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\5.0.102\\RuntimeIdentifierGraph.json"
}
}
}
}
}

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Jariel\.nuget\packages\</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.8.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="$([MSBuild]::EnsureTrailingSlash($(NuGetPackageFolders)))" />
</ItemGroup>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>
</Project>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>
</Project>

8
winsudo/winsudo.csproj Normal file
View file

@ -0,0 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>