当我运行下面的代码时,我正在获取句柄无效,它需要一个字符串并将其传递给远程批处理文件

Posted

技术标签:

【中文标题】当我运行下面的代码时,我正在获取句柄无效,它需要一个字符串并将其传递给远程批处理文件【英文标题】:when i running the below code iam getting handle is invalid it takes a string and pass it to remote batch file 【发布时间】:2010-01-28 14:00:30 【问题描述】:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Security;
namespace SampleProject

    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();
        

        private void button1_Click(object sender, EventArgs e)
        


            String input = textBox1.Text;

            try
            

                Process ps = new Process();

                ps.StartInfo.FileName = @"\\199.63.55.163\d$\hello.bat";

                ps.StartInfo.Arguments = input;

                ps.StartInfo.CreateNoWindow = false;

                String domain = ps.StartInfo.Domain;

                ps.StartInfo.RedirectStandardOutput = true;

                ps.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

                ps.StartInfo.WorkingDirectory = @"d:\praveen";

                ps.StartInfo.UserName = "Raj";

                ps.StartInfo.Domain = "domain";

                ps.StartInfo.Password = Encrypt("Hello123");


                ps.StartInfo.UseShellExecute = false;

                ps.Start();

                ps.WaitForExit();

                MessageBox.Show(ps.StandardOutput.ReadToEnd());
            
            catch (Exception ex)
            
                MessageBox.Show(ex.Message);
            
        

        private void label1_Click(object sender, EventArgs e)
        

        

        public static SecureString Encrypt(String pwd)
        
            SecureString ss = new SecureString();

            for (int i = 0; i < pwd.Length; i++)
            
                ss.AppendChar(pwd[i]);


            

            return ss;
        
    

【问题讨论】:

哪一行导致错误? 抱歉(离题)但 SecureString?你不能让构造函数接受一个字符串,只需要做一个'return new SecureString(pwd)' 【参考方案1】:

这是在黑暗中拍摄,但我认为一旦退出,您将无法读取进程标准输出。

您还必须重定向它 - 请查看此文档:http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx

【讨论】:

【参考方案2】:

.NET Process Start Process Error using credentials (The handle is invalid) 的副本?你需要分配RedirectStandardInput、RedirectStandardOutput、RedirectStandardError

【讨论】:

以上是关于当我运行下面的代码时,我正在获取句柄无效,它需要一个字符串并将其传递给远程批处理文件的主要内容,如果未能解决你的问题,请参考以下文章

DOS/sqlplus“句柄无效”错误?

WINAPI VirtualQueryEx - 无效句柄

带有 Qt5 执行错误的 OpenSplice 创建失败:句柄无效

OpenProcess 错误 87 参数无效

文件更改句柄,QSocketNotifier 由于无效套接字而禁用

如何防止我的函数在RemoveDirectory()WINAPI中延迟删除?