应用程序中未处理的异常

时间:2011-01-14 20:03:27

标签: c#

我一直在处理一个代码,该代码将从本地计算机中获取userName并将其放在日志文件中,如果用户名未被重新登录到日志文件中,则启动.exe。我能够在我的本地机器上运行代码,但是当我把它放在服务器上并运行它时,我收到的错误是:

“您的应用程序中发生了未经处理的异常”

详细信息:

有关调用的详细信息,请参阅此消息的结尾 实时(JIT)调试而不是此对话框。

** * ** 异常文字 ** * **** System.ComponentModel.Win32Exception(0x80004005):系统找不到指定的文件    在System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)    在System.Diagnostics.Process.Start()    在System.Diagnostics.Process.Start(ProcessStartInfo startInfo)    在System.Diagnostics.Process.Start(String fileName)    at User.Form1.Form1_Load(Object sender,EventArgs e)    在System.Windows.Forms.Form.OnLoad(EventArgs e)    在System.Windows.Forms.Form.OnCreateControl()    在System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)    在System.Windows.Forms.Control.CreateControl()    在System.Windows.Forms.Control.WmShowWindow(消息& m)    在System.Windows.Forms.Control.WndProc(消息& m)    在System.Windows.Forms.ScrollableControl.WndProc(消息& m)    在System.Windows.Forms.Form.WmShowWindow(消息& m)    在System.Windows.Forms.Form.WndProc(消息& m)    在System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)    在System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)    在System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd,Int32 msg,IntPtr wparam,IntPtr lparam)

这是我的代码////////////////////////////////////

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.IO;
using System.Diagnostics;

namespace User
{
    public partial class Form1 : Form
    {
        public const string dir = @"C:\Numara";
        public const string path = dir + @"\Audit.log";
        public const string TrackIT = @"\\tkahd-nti-1\TrackIt\Audit32.exe /Q";

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //returns user name
            //label1.Text = System.Environment.UserName.ToString();
            string userName = System.Environment.UserName;  //user name

            if (!Directory.Exists(dir))
                //directory does not exist
                //create it
                Directory.CreateDirectory(dir);  //creates directory


            //by this point directory is created

            //now check file
            if (!File.Exists(path))
                //file does not exist, so create it
                File.Create(path);

            //Read data from the .dat file
            string line = System.IO.File.ReadAllText(path);

            //if the name of the logged in user
            //is the same as the user name of the text file
            //then exit program
            if (line == userName)
                Application.Exit();

            else
            //clear fields and write new name to file and begin audit
            {
                //clears fields
                using (FileStream stream = new FileStream(@"C:\Numara\Audit.log", FileMode.Create))
                {
                    using (TextWriter writer = new StreamWriter(stream))
                    {
                        //writer.Write("");
                        writer.Write(userName);
                    }
                    // writes new name to file
                }

                //StreamReader textIn =
                //  new StreamReader(
                //    new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read));


                //begins audit

                Process.Start(TrackIT);
                Application.Exit();
            }        
        }
    }
 }

2 个答案:

答案 0 :(得分:3)

抛出异常是因为进程无法找到以下网络路径:

\\tkahd-nti-1\TrackIt\Audit32.exe

最可能的原因是运行该应用程序的用户帐户无权访问该目录。

从下面的评论中可以看出应用程序正在使用登录用户的权限运行。您需要授予任何可能以只读方式访问“Audit32.exe”应用程序的人员。

但是,您不需要自己的应用程序来执行此操作。如果您从“管理工具”(通常在控制面板中)打开“本地安全策略”,则可以打开本地策略 - >从左侧树视图中的“用户权限分配”文件夹,然后更改“本地登录”和“本地拒绝登录”设置,以允许/拒绝登录到单个用户或用户组。 但请注意不要将自己锁在机器外

答案 1 :(得分:0)