将参数发送到exe文件(可执行文件)c#或在内存中创建可执行文件c#

时间:2019-10-12 21:08:47

标签: c#

我正在为小学生用C#开发一个Web和桌面应用程序,以便他们可以登录Web并下载其课程的程序。在Azure存储中可以找到Web和应用程序。

我创建的应用程序非常小,因为它只负责下载和执行必要的dll(包含类和考试表格的地方)。

我遇到的问题是我希望将登录数据(用户名和/或密码)作为应用程序中的参数发送,这样它们就不必再次在桌面应用程序中登录。

我试图使应用程序以某种方式读取cookie,但是因为这个在很大程度上取决于浏览器,所以放弃了这个想法。

另一个更容易理解的想法是创建一个在内存中生成可执行文件(exe)的Web服务(它必须在内存中,因为我没有对磁盘的读写权限,我正在使用Azure存储和Azure服务),并使用文件流或类似方式进行下载。

我找到了这个示例,但是它必然需要一个目录来生成exe文件,是否可以在内存中生成exe文件?

或者是否可以将参数传递给已编译的exe文件。

Public Sub generateFile ()
    Dim codeProvider As New VBCodeProvider ()
    Dim icc As ICodeCompiler = codeProvider.CreateCompiler
    Dim Output As String = "C: \ Program Files \ MyApp.exe"


    Dim parameters As New CompilerParameters ()
    Dim results As CompilerResults

    'Make sure we generate an EXE, not a DLL
    parameters.GenerateExecutable = True
    parameters.OutputAssembly = Output
    parameters.CompilerOptions = ("/ target: winexe" & "" & "/ win32icon:" & "" "") & "C: \ Program Files \ MyIcons \ Icon.ico" & "" ""

    results = icc.CompileAssemblyFromSource (parameters, txtCode.Text)

    If results.Errors.Count> 0 Then
        'There were compiler errors
        Dim CompErr As CompilerError
        For Each CompErr In results.Errors
            MessageBox.Show (
                "Line number" & CompErr.Line &
                ", Error Number:" & CompErr.ErrorNumber &
                ", '" & CompErr.ErrorText & ";" &
                Environment.NewLine & Environment.NewLine)
        Next
    Else

        'Successfull Compile
        MessageBox.Show ("Your file is successfully generated!", "Success")
    End if
End Sub

桌面应用程序很小,它仅负责下载和执行Azure存储中目录中包含的最后一个dll,类和表单将位于这些dll中。

非常感谢您的阅读。我很抱歉我的英语,我来自阿根廷

1 个答案:

答案 0 :(得分:3)

  

我遇到的问题是我希望将登录数据(用户名和/或密码)作为应用程序中的参数发送,这样它们就不必再次在桌面应用程序中登录。

这不是一件容易的事。这是我建议的步骤以及用户体验。

  1. 用户登录网站
  2. 用户下载安装程序
  3. 用户启动安装程序

    a。在安装过程中,应用程序注册一个自定义URI方案 Registering an Application to a URI Scheme

无论安装后还是用户执行应用程序时,以下内容均相同。

  1. 用户启动应用程序(或安装程序启动)
  2. 应用程序启动浏览器以登录
  3. 用户登录,浏览器使用凭据(不提供用户名/密码)重定向到自定义URI方案,因此您的应用程序现在可以在下载内容时进行身份验证。

这很常见。 GotoMeeting,Slack,Discord等应用程序以及其他各种应用程序都做同样的事情。