我一直在处理一个代码,该代码将从本地计算机中获取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();
}
}
}
}
答案 0 :(得分:3)
抛出异常是因为进程无法找到以下网络路径:
\\tkahd-nti-1\TrackIt\Audit32.exe
最可能的原因是运行该应用程序的用户帐户无权访问该目录。
从下面的评论中可以看出应用程序正在使用登录用户的权限运行。您需要授予任何可能以只读方式访问“Audit32.exe”应用程序的人员。
但是,您不需要自己的应用程序来执行此操作。如果您从“管理工具”(通常在控制面板中)打开“本地安全策略”,则可以打开本地策略 - >从左侧树视图中的“用户权限分配”文件夹,然后更改“本地登录”和“本地拒绝登录”设置,以允许/拒绝登录到单个用户或用户组。 但请注意不要将自己锁在机器外。
答案 1 :(得分:0)