解决了!见下文。
我有 2 个 C# 应用程序。应用程序 a 应该修改应用程序 b 的内部资源。应用程序 b 应该在执行时对其(修改后的)资源执行某些操作。
我怎样才能做到这一点?
这是我尝试过的:
public static void addFileToResources(string dest, string src)
{
Assembly a_dest = Assembly.LoadFile(dest);
using (Stream s_dest = a_dest.GetManifestResourceStream("Elevator.Properties.Resources.resources"))
{
using (ResourceWriter rw = new ResourceWriter(s_dest))
{
byte[] b_src = File.ReadAllBytes(src);
rw.AddResource("target", b_src);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在EDIT上得到了一个System.ArgumentException,
因为 .net 资源似乎不可能:还有其他方法吗?
我想生成一个可执行的单个文件(即 application的 exe ),并且可以处理从 application 执行之前给出的数据(存储在 exe 中)。最好不必为了给它数据而实际编译。
为了使它更容易一些假设:The stream is readonly.System.Resources.ResourceWriter..ctor(Stream stream)
bab
a 总是在之前执行 ba 只执行一次我正在尝试编写一个C#程序,它应该从windows调用runas工具并自动输入密码.
我尝试了什么:
Process runas = new Process();
runas.StartInfo.FileName = "runas";
runas.StartInfo.UseShellExecute = false;
runas.StartInfo.RedirectStandardInput = true;
runas.StartInfo.Arguments = "\"/user:domain\\username\" \"cmd.exe\"";
runas.Start();
StreamWriter stream = runas.StandardInput;
stream.WriteLine("our super secret password");
stream.Flush();
stream.Close();
runas.WaitForExit();
runas.Close();
Run Code Online (Sandbox Code Playgroud)
发生了什么:
我得到以下输出.
Please enter the password for "...":
Trying to execute cmd.exe as user "kfz\dummy"...
RUNAS-ERROR: cmd.exe could not be executed
1326: Authentication failed: unknown username or password.
Run Code Online (Sandbox Code Playgroud)
(由我在德语窗口翻译)
是的,我在quadrupel检查了密码和用户名.在命令行中手动输入所有内容都可以正常工作.
我尝试过的内容:
我尝试重定向输出并从中读取,但没有成功.
我尝试了不同的写入流的变体:
stream.Write("our super secret password");
stream.Write("our super secret password\n");
stream.Write("our super secret password\r\n");
Run Code Online (Sandbox Code Playgroud)
所有结果都是相同的行为.
我注意到: …
在会话中存在或反对保存密码哈希的参数是什么?
在登录时在会话中存储密码哈希(在数据库中),并在每次访问时根据数据库哈希对其进行验证,以便自动使密码更改的所有会话无效.
这些是我到目前为止关于这个主题的想法.
我不想在这里开始主观讨论.我想收集(尽可能客观)该主题的利弊.我还没有考虑过什么?
澄清:使所有会话无效(除了用于更改密码的会话)的想法来自于"如果一个人更改密码而没有告诉某些其他人有这样的原因,那么他们应该立即失去访问权限". ,假设没有恶意用户(这将是一个多么美妙的世界......).