我正在为小学生用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中。
非常感谢您的阅读。我很抱歉我的英语,我来自阿根廷
答案 0 :(得分:3)
我遇到的问题是我希望将登录数据(用户名和/或密码)作为应用程序中的参数发送,这样它们就不必再次在桌面应用程序中登录。
这不是一件容易的事。这是我建议的步骤以及用户体验。
用户启动安装程序
a。在安装过程中,应用程序注册一个自定义URI方案 Registering an Application to a URI Scheme
无论安装后还是用户执行应用程序时,以下内容均相同。
这很常见。 GotoMeeting,Slack,Discord等应用程序以及其他各种应用程序都做同样的事情。