8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

向虚拟机添加计划任务

Johan Carlsson 2月前

109 0

我正在尝试向我的虚拟机添加一个计划任务,但我一直收到以下错误:-(HRESULT:0x80070032)。这是我添加任务的代码:检查它是本地添加的还是远程添加的:TaskService

我正在尝试向我的虚拟机添加计划任务,但我一直收到以下错误:
- (HRESULT:0x80070032)。
这是我添加任务的代码:

检查其是否是本地添加或远程添加:

TaskService tService;
if (server != "" || user != "" || pass != "" || domain != "")
{
    tService = new TaskService(server, user, pass, domain);
}
else
{
    tService = new TaskService();
}

定义任务并添加任务属性:


TaskDefinition tDefinition = tService.NewTask();
tDefinition.Principal.DisplayName = tskName;
tDefinition.RegistrationInfo.Description = tskDesc;
DailyTrigger dtrigger = new DailyTrigger();
dtrigger.StartBoundary = start;
dtrigger.DaysInterval = ((short)repeat);
dtrigger.EndBoundary = end;
dtrigger.Enabled = true;
tDefinition.Triggers.Add(dtrigger);
tDefinition.RegistrationInfo.Author = PriUtilizador;
tDefinition.RegistrationInfo.Description = tskDesc;
tDefinition.RegistrationInfo.Date = DateTime.Now;
//this is where i add my action for the task
tDefinition.Actions.Add(new ExecAction("C:\\Users\\goncalo.figueiredo\\PRJ_PRI_ContasCorrentes\\DS.ERP_Primavera_G\\bin\\" + "EmailSender.exe", CCArgs));
if (domain != "")
{
    tDefinition.Principal.LogonType = TaskLogonType.ServiceAccount;
    tDefinition.Principal.UserId = "NT AUTHORITY\\NETWORKSERVICE";
    tDefinition.Principal.RunLevel = TaskRunLevel.Highest;
    try
    {
        tService.RootFolder.RegisterTaskDefinition(tskName, tDefinition);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
...

我走在正确的道路上吗?

帖子版权声明 1、本帖标题:向虚拟机添加计划任务
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Johan Carlsson在本站《winforms》版块原创发布, 转载请注明出处!
最新回复 (0)
  • EmailSender 是我制作的一个可执行文件,它使用 SMTP 协议发送电子邮件。我发现,这主要是因为它没有权限访问给定的服务器,所以它可以定义任务。我正在尝试设置一个 VM 来测试它

  • 以下是我的场景:我有一个针对 .NET 4.7 的 winforms 应用程序,我想更新它,因为它越来越难以维护。它的一个功能(在众多功能中)是协调用户

    以下是我的场景:我有一个针对 .NET 4.7 的 winforms 应用程序,我想更新它,因为它越来越难以维护。它的一个功能(在众多功能中)是协调使用 asp.net 身份的多个 mvc 应用程序的用户权限。
    为此,我有一个引用 asp.net 身份的类库,并执行维护网站上的身份数据库所需的所有管理任务。

    我想将 winforms 应用程序更新到 .NET 8.0(如果允许的话,甚至可以更新到 9)。我无法将类库更新到 .NET core,因为它要求我将身份更新为使用 EFcore 和与 asp.net 身份不同的架构的身份核心。我不想这样做,因为它会破坏我所有的 MVC 应用程序,而我现在没有时间重写它们。

    我的问题是,我如何才能在 .NET 8 winforms 应用程序中继续使用这个类库?是否有任何包装器可以让我将 asp.net 标识保留在 .NET core 库中?欢迎提出任何建议

  • 我的备用计划是在 .NET 8 中为 asp.net 身份编写自己的管理库。最好能节省一些工作。

  • 我正在尝试将 Excel 工作表的内容批量复制到 SQL Server 表中。问题是,Excel 工作表中有一列称为 ISBN,几乎所有时候这些值都是相同的......

    我正在尝试将 Excel 工作表的内容批量复制到 SQL Server 表中。问题是,Excel 工作表中有一列名为 ISBN ,其中的值几乎全部由数字(始终是整数)组成,但有时也包含一些字母,例如 X .

    但在完成批量复制后,我检查了 ISBN 列中有字母的记录,发现有字母的记录是 null 。因此,此列应被视为 string (一切都设置为这样做,但我找不到为什么不这样做)。

    以下是批量复制功能的代码:

    # Import the Excel file
    public class ExcelImport
    {
        private string Excel03ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'";
        private string Excel07ConString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'";
    
        public void Import(string filePath)
        {
            string file = filePath;
            string extension = Path.GetExtension(file);
            string conString = "";
            string sheetName = "";
    
            switch (extension) 
            {
                case ".xls":
                    conString = string.Format(Excel03ConString, filePath, "YES");
                    break;
    
                case ".xlsx":
                    conString = string.Format(Excel07ConString, filePath, "YES");
                    break;
            }
    
            using (OleDbConnection conn = new(conString))
            {
                using (OleDbCommand cmd = new())
                {
                    cmd.Connection = conn;
                    conn.Open();
                    DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    sheetName = dt.Rows[0]["Table_Name"].ToString();
                    conn.Close();
                }
            }
    
            using (OleDbConnection conn = new(conString))
            {
                using (OleDbCommand cmd = new())
                {
                    OleDbDataAdapter oda = new();
                    cmd.CommandText = "SELECT * FROM [" + sheetName + "]";
                    cmd.CommandType = CommandType.Text;
                    cmd.Connection = conn;
    
                    conn.Open();
                    oda.SelectCommand = cmd;
                    DataTable dt = new();
                    oda.Fill(dt);
                    conn.Close();
                    InsertRecords(dt);
                }
            }
        }
    
        private async void InsertRecords(DataTable imported)
        {
            string truncateQuery = "DELETE FROM Base";
    
            SqlConnection conn = new DbConnection().GetConnection();
    
            using(conn)
            {
                SqlCommand sqlCmd = new SqlCommand(truncateQuery, conn);
                await conn.OpenAsync();
                await sqlCmd.ExecuteNonQueryAsync();
    
                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
                {
                    bulkCopy.DestinationTableName = "dbo.Base";
    
                    bulkCopy.ColumnMappings.Add("ISBN", "ISBN"); // This is the column that results in a null value when the ISBN has an X character
                    bulkCopy.ColumnMappings.Add("Title", "Title");
    
                    await bulkCopy.WriteToServerAsync(imported);
                    await conn.CloseAsync();
                }
            }
        }
    }
    

    将 SQL Server 表中的列设置为 varchar 数据类型,尝试在 Excel 中使用不同的单元格类型(常规、数字、文本、自定义),但这始终会导致出现 null 。当 ISBN 没有字母时,它不会引发错误。

  • 我可能只是手动将数据读入数据表,而不是使用填充。@TN,这是一篇非常好的文章,它解释了为什么通过 SSIS 和导入向导导入 Excel 文件如此痛苦

  • 感谢大家的回复,我尝试了一些方法,但由于公司网络问题和其他一些问题,过程一直出错,所以我决定只克隆该列,并使用 Excel 函数 TEXT() 来转换值而不丢失任何东西。

  • 我正在尝试让数据网格视图单元格在用户输入无效数据时将其值更改为默认值。单元格类型是 int?我尝试使用 CellValidating 事件来执行此操作,可以给出数字 w...

    我正在尝试让数据网格视图单元格在用户输入无效数据时将其值更改为默认值。单元格类型为 int?。

    我尝试使用 CellValidating 事件来执行此操作,可以使用 给出数字 DataGridView.EditingControl.Text = "0" ,但无法将单元格值更改为 null 。但该列已绑定到 int? 类型属性。我也尝试使用 CellParsing 事件来执行此操作,但此事件在单元格验证后触发,因此如果用户输入空值并按回车键,数据网格视图会抛出错误,因为单元格仅接受 int 值,但我希望它在用户输入空值时将值更改为 null。

    private void DataGridView_NumberCellValidate(object sender, DataGridViewCellValidatingEventArgs e){
        if (e.ColumnIndex != 8 && e.ColumnIndex != 9) return;  
        if (!int.TryParse(e.FormattedValue?.ToString(), out int temp)) {
            e.Cancel = true;
            // i want to not cancel the endEdit, but change value to default if value is not valid
            MessageBox.Show("Value is not number."); 
    }}
    
  • 调整列/行大小时,dgv 不会在视觉上更新,直到您完成。它也不会在单元格上显示常规的“调整大小栏”来显示其最终位置。有没有什么方法可以...

    调整列/行大小时,dgv 不会在视觉上更新,直到您完成。它也不会在单元格上显示常规的“调整大小栏”来显示最终位置。

    enter image description here

    有没有办法让行/列通过移动鼠标实时更新而不是等到更新完成后才更新?

  • 通过创建从 DataGridView 继承的自定义控件(Windows 窗体),问题几乎得到解决。

    通过以下类,在使用鼠标调整大小时,网格的单元格分隔线的移动 可以平滑连续地进行,无论是列还是行 .

    DataGridView_WithSmoothResizing.cs:

    public partial class DataGridView_WithSmoothResizing : DataGridView
    {
        public DataGridView_WithSmoothResizing()
        {
            InitializeComponent();
            RowHeadersVisible = true;
            ColumnHeadersVisible = true;
            RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing;
            ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
        }
    
        public const int ROW_HEADERS_COLUMN_INDEX = -1;
        public const int INVALID_COLUMN_INDEX = -2;
    
        public const int COLUMNS_ROW_INDEX = -1;
        public const int INVALID_ROW_INDEX = -2;
    
        private int f_Base_X = 0;
        private int f_Base_Y = 0;
        private bool f_IsColumnResizing = false;
        private bool f_IsRowResizing = false;
        private int f_Resizing_Column_Index = INVALID_COLUMN_INDEX;
        private int f_Resizing_Row_Index = INVALID_ROW_INDEX;
        protected override void OnMouseDown(MouseEventArgs e)
        {
            if (IsMouseLeftClick(e))
            {
                ReserveMouseLocation(e);
                if (IsSetResizingColumnCursor)
                    ReserveResizingColumnIndex(e.X);
                else if (IsSetResizingRowCursor)
                    ReserveResizingRowIndex(e.Y);
            }
            base.OnMouseDown(e);
        }
        protected override void OnMouseUp(MouseEventArgs e)
        {
            ResetResizingColumnIndex();
            ResetResizingRowIndex();
            base.OnMouseUp(e);
        }
        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (IsMouseLeftClick(e))
            {
                if (f_IsColumnResizing)
                {
                    var DeltaX = e.X - f_Base_X;
                    if (DeltaX != 0)
                        ResizeColumn(f_Resizing_Column_Index, DeltaX);
                }
                else if (f_IsRowResizing)
                {
                    var DeltaY = e.Y - f_Base_Y;
                    if (DeltaY != 0)
                        ResizeRow(f_Resizing_Row_Index, DeltaY);
                }
            }
            ReserveMouseLocation(e);
            base.OnMouseMove(e);
        }
        protected int GetColumnIndex(int X)
        {
            if (IsSetResizingColumnCursor)
            {
                var Relative_X = X - Left;
                for (int ColumnIndex = 0; ColumnIndex < Columns.Count; ColumnIndex++)
                {
                    var IsFirstColumn = (ColumnIndex == 0);
                    var IsLastColumn = (ColumnIndex == Columns.Count - 1);
                    var NextColumnIndex = ColumnIndex + 1;
                    var ThisColumnArea = GetColumnArea(ColumnIndex);
                    var NextColumnArea = IsLastColumn ? ThisColumnArea : GetColumnArea(NextColumnIndex);
                    if (IsFirstColumn && (Relative_X < RowHeadersWidth))
                        return ROW_HEADERS_COLUMN_INDEX;
                    if (IsInsideColumnArea(Relative_X, ThisColumnArea, NextColumnArea))
                        return ColumnIndex;
                }
            }
            return INVALID_COLUMN_INDEX;
        }
        protected int GetRowIndex(int Y)
        {
            if (IsSetResizingRowCursor)
            {
                var Relative_Y = Y; // "Y" is relative, so the "Top" value does not need to be subtracted from "Y".
                for (int RowIndex = 0; RowIndex < Rows.Count; RowIndex++)
                {
                    var IsFirstRow = (RowIndex == 0);
                    var IsLastRow = (RowIndex == Rows.Count - 1); // Including new empty row
                    var NextRowIndex = RowIndex + 1;
                    var ThisRowArea = GetRowArea(RowIndex);
                    var NextRowArea = IsLastRow ? ThisRowArea : GetRowArea(NextRowIndex);
                    if (IsFirstRow && IsInsideRowAreaForColumnsHeader(Relative_Y, ThisRowArea))
                        return COLUMNS_ROW_INDEX;
                    if (IsInsideRowAreaForData(Relative_Y, ThisRowArea, NextRowArea))
                        return RowIndex;
                }
            }
            return INVALID_ROW_INDEX;
        }
        private void ResizeColumn(int ColumnIndex, int DeltaX)
        {
            if (ColumnIndex == ROW_HEADERS_COLUMN_INDEX)
            {
                // Row Headers Resizing                           
                if (RowHeadersWidth + DeltaX > 5)
                    RowHeadersWidth += DeltaX;
            }
            else if ((ColumnIndex > INVALID_COLUMN_INDEX) && (ColumnIndex < Columns.Count))
                Columns[ColumnIndex].Width += DeltaX;
        }
        private void ResizeRow(int RowIndex, int DeltaY)
        {
            if (RowIndex == COLUMNS_ROW_INDEX)
            {
                // Columns Row Resizing                           
                if (ColumnHeadersHeight + DeltaY > 5)
                    ColumnHeadersHeight += DeltaY;
            }
            else if ((RowIndex > INVALID_ROW_INDEX) && (RowIndex < Rows.Count))
                Rows[RowIndex].Height += DeltaY;
        }
        private bool IsMouseLeftClick(MouseEventArgs e)
        {
            return (e.Button == MouseButtons.Left);
        }
        private void ReserveMouseLocation(MouseEventArgs e)
        {
            f_Base_X = e.X;
            f_Base_Y = e.Y;
        }
        private void ReserveResizingColumnIndex(int X)
        {
            f_IsColumnResizing = true;
            f_Resizing_Column_Index = GetColumnIndex(X);
        }
        private void ReserveResizingRowIndex(int Y)
        {
            f_IsRowResizing = true;
            f_Resizing_Row_Index = GetRowIndex(Y);
        }
        private void ResetResizingColumnIndex()
        {
            f_IsColumnResizing = false;
            f_Resizing_Column_Index = INVALID_COLUMN_INDEX;
        }
        private void ResetResizingRowIndex()
        {
            f_IsRowResizing = false;
            f_Resizing_Row_Index = INVALID_ROW_INDEX;
        }
        public bool IsSetResizingColumnCursor
        {
            get
            {
                return (Cursor == Cursors.SizeWE);
            }
        }
        public bool IsSetResizingRowCursor
        {
            get
            {
                return (Cursor == Cursors.SizeNS);
            }
        }
        private Rectangle GetColumnArea(int ColumnIndex)
        {
            return GetCellDisplayRectangle(ColumnIndex, 0, false);
        }
        private Rectangle GetRowArea(int RowIndex)
        {
            return GetCellDisplayRectangle(0, RowIndex, false);
        }
        private bool IsInsideColumnArea(int X, Rectangle ThisColumnRect, Rectangle NextColumnRect)
        {
            return (X > ThisColumnRect.X) && (X < (ThisColumnRect.X + ThisColumnRect.Width + NextColumnRect.Width / 2));
        }
        private bool IsInsideRowAreaForData(int Y, Rectangle ThisRowRect, Rectangle NextRowRect)
        {
            return (Y > ThisRowRect.Y) && (Y < (ThisRowRect.Y + ThisRowRect.Height + NextRowRect.Height / 2));
        }
        private bool IsInsideRowAreaForColumnsHeader(int Y, Rectangle ThisRowRect)
        {
            return (Y < ColumnHeadersHeight + ThisRowRect.Height / 4);
        }
    }
    
  • 亲爱的@CocoaMix86,几分钟前我修改了“DataGridView_WithSmoothResizing”类,并修复了调整第一列(RowHeadersColumn)大小时的错误。

  • 我需要制作一张包含每个月统计数据的图表。但这些列没有符号。只有图表中间是第一个月。在此处输入图像描述var valuesAsArray = (MonthEnu...

    我需要制作一张包含每个月统计数据的图表。但这些列没有签名。只有图表中间是第一个月。 在此处输入图片描述

    var valuesAsArray = (MonthEnum[])System.Enum.GetValues(typeof(MonthEnum));
    int[] pointsArray = { 50, 100, 17, 5, 30, 41, 42, 9, 88, 14, 37, 50 };
    
    for (int i = 0; i < valuesAsArray.Length; i++)
    {
        Series series = chart1.Series.Add(valuesAsArray[i].ToString());
        series.Points.AddXY(valuesAsArray[i].ToString(), pointsArray[i]);
        series.ChartType = SeriesChartType.Bar;
        series.Points[0].Label = pointsArray[i].ToString();
        series.CustomProperties = "PointWidth=2";
    }
    
  • 您可能需要设置标签在图表侧面出现的频率间隔。这可以在设计器中完成,也可以在代码中完成,如下所示:

    chart1.ChartAreas[0].AxisY.LabelStyle.Interval = 1;
    
  • 我不是 C# 程序员。只是想组装一个小型实用程序应用程序。我遇到了一个毫无意义的问题。我在解决方案中添加了一些资源:并将其属性设置为 c...

    我不是 C# 程序员。只是想编写一个小型实用程序应用程序。我遇到了一个毫无意义的问题。

    我在我的解决方案中添加了一些资源:

    enter image description here

    并将其属性设置为内容并始终复制。

    在主表单应用程序中,我想要使用图像:

    pictureBox_Product.Image = Properties.Resources.airsmart_co2;
    

    但这会导致上述错误,并在 airsmart_co2 下方出现红色波浪线。我以为这就是它应该如何工作的。但是,我对此几乎一无所知……需要一点帮助吗?!

  • 对于所有桌面应用程序项目(例如“Windows Forms”、“WPF”和“WinUI”),执行此操作的方法基本相同。

    您是否已在“添加新项目”菜单中添加了“资源文件”?它具有“resx”扩展名,并且应位于/添加到项目的新“属性”子文件夹中。

    enter image description here

    然后在解决方案资源管理器中双击此 resx 文件,并在打开的编辑器中从“添加资源/添加现有文件”下拉菜单中选择您的图像。这将自动将所选图像插入到项目的(新创建的)“Recources”子文件夹中。

    enter image description here

    然后在 png 文件的解决方案资源管理器中尝试将构建操作设置为“无”,并将复制到输出目录设置设置为“不复制”。

    enter image description here

返回
作者最近主题: