大家好
我怎样才能使用Inno设置获取用户的本地IP地址?我认为使用win32 api GetIpAddrTable,但目前还不清楚如何进行调整.有人有其他任何方式吗?或者知道怎么做?坦克
有没有办法检查是否已安装.NET Framework 4并仅在不在系统中时安装它?
我知道,如果通过检查以下注册表项来安装.NET Framework 4,我如何确定?
hasDotnet4 :=
RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\.NETFramework\policy\v4.0');
Run Code Online (Sandbox Code Playgroud)
如何根据上述检查有条件地运行.NET Framework 4安装?
如何在Inno Setup中静默安装Microsoft VC++可再发行组件?我使用了以下代码,除安装进度窗口外,大多数安装部分都是静默的.
这是我的[Run]部分代码: -
[Run]
Filename: "{app}\bin\vcredist_x86.exe"; \
Parameters: "/passive /verysilent /norestart /q:a /c:""VCREDI~3.EXE /q:a /c:""""msiexec /i vcredist.msi /qn"""" """; \
Check: VCRedistNeedsInstall; WorkingDir: {app}\bin;Flags: runminimized nowait; \
StatusMsg: Installing CRT...
Run Code Online (Sandbox Code Playgroud) 我正在使用Renci.SshNet库通过使用SFTP递归地获取文件和目录列表.我能够连接SFTP站点,但我不知道如何在C#中递归获取目录和文件列表.我没有找到任何有用的例子.
有人试过吗?如果是这样,你可以发布一些关于如何递归获取这些文件和文件夹的示例代码.
谢谢,
普拉夫
Internet上有许多引用声称GUI和控制台应用程序之间的区别之一是从批处理文件运行GUI应用程序不会阻止其执行,而运行控制台应用程序会阻止它.
很少有很多参考文献,特别是来自SO/SE:
而且,我自己记得这是/是真的.
但它似乎没有这种方式.
我在一个简单的批处理文件上测试过这个:
echo Pre
notepad
echo Post
Run Code Online (Sandbox Code Playgroud)
在Post不打印,直到我关闭记事本.为什么,当记事本显然是一个GUI应用程序?
我在Windows 8,7和XP上测试了这个,只是为了排除在最新版本的Windows中行为发生了变化的可能性.我试图将命令扩展禁用为可能的罪魁祸首之一.
在尝试SFTP文件从Windows到Unix服务器时,我遇到了一个奇怪的问题.错误"堆栈跟踪"是 -
4: Failure
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2846)
at com.jcraft.jsch.ChannelSftp.checkStatus(ChannelSftp.java:2459)
at com.jcraft.jsch.ChannelSftp._sendCLOSE(ChannelSftp.java:2465)
at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:683)
at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:475)
at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:365)
Run Code Online (Sandbox Code Playgroud)
我在其他论坛上搜索了很多,但无法找到根本原因.我还观察了一件事 - 文件名,我正在尝试使用SFTP,当我将其更改为*.XML时,它是*.xml,SFTP是"成功的".非常奇怪无法确定问题.我正在尝试使用JSch Java API.但是我在尝试WinSCP前端时遇到了同样的问题.
我现在明白"Inno Setup可以为您执行命令行工具,而无需使用批处理文件." (Inno安装程序可以安装Windows安全组吗?)它能够做到这一点是有意义的.从我到目前为止的网络搜索到Inno Setup,我找不到一个了解如何做到这一点的起点.一个完整的答案可能没有必要,如果我只是进一步暗示要寻找什么,那可能就足够了.
感谢@ user2526830代码.基于该代码,我在程序中添加了几行,因为我想读取SSH命令的输出.下面是我的代码,它给出了一个错误while
StandardOut尚未重定向或进程尚未开始.
我想要实现的是我想将ls的输出读入字符串.
ProcessStartInfo startinfo = new ProcessStartInfo();
startinfo.FileName = @"f:\plink.exe";
startinfo.Arguments = "-ssh abc@x.x.x.x -pw abc123";
Process process = new Process();
process.StartInfo = startinfo;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.Start();
process.StandardInput.WriteLine("ls -ltr /opt/*.tmp");
process.StandardInput.WriteLine("exit");
process.StartInfo.RedirectStandardOutput = true;
while (!process.StandardOutput.EndOfStream)
{
string line = process.StandardOutput.ReadLine();
}
process.WaitForExit();
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud) 需要使用SFTP客户端并希望在.NET Core 2.0应用程序中构建它.
我想知道SFTP是否已经是.NET标准2.0的一部分,还是我需要使用第三方库,例如SSH.NET?
我正在显示RTF文档RichTextBox("已升级" RichEdit50W).文档中的关键字使用语法链接到网页:
{\field{\*\fldinst{HYPERLINK ""https://www.example.com/"" }}{\fldrslt{\cf1 keyword\cf0 }}}
Run Code Online (Sandbox Code Playgroud)
我不想强调关键字.在Windows 10版本1803(以及所有以前版本的Windows,包括XP,Vista,8)中,只要在锚点上设置了颜色(注意\cf1),锚点就不会加下划线.
但这不再适用于Windows 10版本1803.我将向Microsoft报告此情况.但我不确定,如果我不依赖于无证件的行为.我可以想象这个改变实际上不是一个错误,而是一个修复.所以我想知道是否有更正确的方法来防止超链接加下划线.
示例代码:
public class ExRichText : RichTextBox
{
[DllImport("kernel32.dll", EntryPoint = "LoadLibraryW", CharSet = CharSet.Unicode, SetLastError = true)]
private static extern IntPtr LoadLibraryW(string path);
protected override CreateParams CreateParams
{
get
{
var cp = base.CreateParams;
LoadLibraryW("MsftEdit.dll");
cp.ClassName = "RichEdit50W";
return cp;
}
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ExRichText rtb = new ExRichText();
rtb.Parent = this;
rtb.SetBounds(10, 10, …Run Code Online (Sandbox Code Playgroud) .net ×4
inno-setup ×4
c# ×3
sftp ×3
winapi ×2
.net-core ×1
batch-file ×1
delphi ×1
java ×1
jsch ×1
pascalscript ×1
plink ×1
richtextbox ×1
rtf ×1
ssh ×1
ssh.net ×1
winscp ×1