日期:2014-05-18 浏览次数:21084 次
[DllImport("mpr.dll", EntryPoint = "WNetAddConnection2")]
public static extern uint WNetAddConnection2(
[In] NETRESOURCE lpNetResource,
string lpPassword,
string lpUsername,
uint dwFlags);
[DllImport("Mpr.dll")]
public static extern uint WNetCancelConnection2(
string lpName,
uint dwFlags,
bool fForce);
[StructLayout(LayoutKind.Sequential)]
public class NETRESOURCE
{
public int dwScope;
public int dwType;
public int dwDispalyType;
public int dwUsage;
public string LocalName;
public string RemoteName;
public string Comment;
public string Provider;
}
public override int MappingDrive(string localname, string path,string provider)
{
try
{
NETRESOURCE myNetResource = new NETRESOURCE();
myNetResource.dwScope = 2;
myNetResource.dwType = 1;
myNetResource.dwDispalyType = 3;
myNetResource.dwUsage = 1;
myNetResource.LocalName = localname;
myNetResource.RemoteName = path;
uint nret = WNetAddConnection2(myNetResource, "9fcs999", "jianbo", 0);
return Convert.ToInt32(nret);
}
catch
{
return -1;
}
}
public override int CloseDrive(string localname)
{
uint cnret = WNetCancelConnection2(localname, 0, true);
Thread.Sleep(1000);
return Convert.ToInt32(cnret);
}
public override int MappingDrive(string localname, string path,string provider)
{
string para = localname + " " + path;
StringBuilder outputStr = new StringBuilder();
int re = 1;
try
{
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"software\microsoft\PCHealth\ErrorReporting\", true);
int doReport = (int)key.GetValue("DoReport");
if (doReport != 0)
{
key.SetValue("DoReport", 0);
}
int showUI = (int)key.GetValue("ShowUI");
if (showUI != 0)
{
key.SetValue("ShowUI", 0);
}
}
catch
{
}
m_Error = "";
m_Output = "";
try
{
Process p = new Process();
p.StartInfo.FileName = "subst"; // fileName;
p.StartInfo.Arguments = para;
p.StartInfo.UseShellExecute = false;
//p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.WaitForExit();
var exitCode = p.ExitCode;
re = exitCode;
}
catch (Exception e)
{
m_Error = e.Message;
}
return re;
}
public override int CloseDrive(string localname)
{
int re = MappingDrive(localname, " /D