ProcessStartInfo 例子

如果你想在C#中以管理员新开一个进程,参考: Run process as administrator from a non-admin application
ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\cmd.exe");
info.UseShellExecute = true;
info.Verb = "runas";
Process.Start(info);

如果你想在命令行加参数,可以参考: Running CMD as administrator with an argument from C#
Arguments = "/user:Administrator \"cmd /K " + command + "\""

-----------------------------------------------------------------------------------------

using System;
using System.Diagnostics;
using System.ComponentModel;

namespace MyProcessSample
{
	/// <summary>
	/// Shell for the sample.
	/// </summary>
	class MyProcess
	{
		// These are the Win32 error code for file not found or access denied.
		const int ERROR_FILE_NOT_FOUND =2;
		const int ERROR_ACCESS_DENIED = 5;

		/// <summary>
		/// Prints a file with a .doc extension.
		/// </summary>
		void PrintDoc()
		{
			Process myProcess = new Process();

			try
			{
				// Get the path that stores user documents.
				string myDocumentsPath =
					Environment.GetFolderPath(Environment.SpecialFolder.Personal);

				myProcess.StartInfo.FileName = myDocumentsPath + "\\MyFile.doc";
				myProcess.StartInfo.Verb = "Print";
				myProcess.StartInfo.CreateNoWindow = true;
				myProcess.Start();
			}
			catch (Win32Exception e)
			{
				if(e.NativeErrorCode == ERROR_FILE_NOT_FOUND)
				{
					Console.WriteLine(e.Message + ". Check the path.");
				} 

				else if (e.NativeErrorCode == ERROR_ACCESS_DENIED)
				{
					// Note that if your word processor might generate exceptions
					// such as this, which are handled first.
					Console.WriteLine(e.Message +
						". You do not have permission to print this file.");
				}
			}
		}

		public static void Main()
		{
			MyProcess myProcess = new MyProcess();
			myProcess.PrintDoc();
		}
	}
}

------------------------------------------------------------------------------------

(1) 打开文件

        private void btnopenfile_click(object sender, eventargs e)
        {
            // 定义一个 processstartinfo 实例
              processstartinfo psi = new processstartinfo();
            // 设置启动进程的初始目录
              psi.workingdirectory = application.startuppath;
            // 设置启动进程的应用程序或文档名
              psi.filename = @"xwy20110619.txt";
            // 设置启动进程的参数
              psi.arguments = "";
            //启动由包含进程启动信息的进程资源
              try
            {
                process.start(psi);
            }
            catch (system.componentmodel.win32exception ex)
            {
                messagebox.show(ex.message);
                return;
            }
        }

(2) 打开浏览器

        private void btnopenie_click(object sender, eventargs e)
        {
            // 启动ie进程
              process.start("iexplore.exe");
        }

(2) 打开指定 url

        private void btnopenurl_click(object sender, eventargs e)
        {
            // 方法一
              // 启动带参数的ie进程
              process.start("iexplore.exe", "http://www.cnblogs.com/skysoot/");

            // 方法二
              // 定义一个processstartinfo实例
              processstartinfo startinfo = new processstartinfo("iexplore.exe");
            // 设置进程参数
              startinfo.arguments = "http://www.cnblogs.com/skysoot/";
            // 并且使进程界面最小化
              startinfo.windowstyle = processwindowstyle.minimized;
            // 启动进程
              process.start(startinfo);
        }

(2) 打开文件夹

        private void btnopenfolder_click(object sender, eventargs e)
        {
            // 获取“收藏夹”文件路径
              string myfavoritespath = system.environment.getfolderpath(environment.specialfolder.favorites);
            // 启动进程
              system.diagnostics.process.start(myfavoritespath);
        }

(2) 打印文档

        private void btnprintdoc_click(object sender, eventargs e)
        {
            // 定义一个进程实例
              process myprocess = new process();
            try
            {
                // 设置进程的参数
                  string mydocumentspath = environment.getfolderpath(environment.specialfolder.personal);
                myprocess.startinfo.filename = mydocumentspath + "\\txtfortest.txt";
                myprocess.startinfo.verb = "print";

                // 显示txt文件的所有谓词: open,print,printto
                foreach (string v in myprocess.startinfo.verbs)
                {
                    messagebox.show(v);
                }

                // 是否在新窗口中启动该进程的值
                  myprocess.startinfo.createnowindow = true;
                // 启动进程
                  myprocess.start();
            }
            catch (win32exception ex)
            {
                if (ex.nativeerrorcode == 1)
                {
                    messagebox.show(ex.message + " check the path." + myprocess.startinfo.filename);
                }
                else if (ex.nativeerrorcode == 2)
                {
                    messagebox.show(ex.message + " you do not have permission to print this file.");
                }
            }
时间: 2024-11-25 21:47:37

ProcessStartInfo 例子的相关文章

Android小例子:使用反射机制来读取图片制作一个图片浏览器

效果图: 工程文件夹: 该例子可供于新手参考练习,如果有哪里不对的地方,望指正>-< <黑幕下的人> java代码(MainActivity.java): package com.example.imageswitchtest; import java.lang.reflect.Field; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.v

JSON 简单例子

代码: json [ { "title" : "a", "num" : 1 }, { "title" : "b", "num" : 1 }, { "title" : "c", "num" : 1 }] 例子1 js var box=[ { title:'a', num:1, height:177, }, { title:'b',

最简单的基于FFmpeg的AVDevice例子(读取摄像头)【转】

转自:http://blog.csdn.net/leixiaohua1020/article/details/39702113 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] libavdevice使用 注意事项 代码 结果 下载 =====================================================最简单的基于FFmpeg的AVDevice例子文章列表: 最简单的基于FFmpeg的AVDevice例子(读取摄像头) 最简单的基于FFm

Clustering by Passing Messages Between Data Points(Brendan J.Frey* and Delbert Dueck)例子

例1,数据点聚类:AP应用到25个二维数据中,使用负平法误差作为相似度  聚类数目不用预先指定 AP的一个优点是聚类数目不用预先指定,而是在消息传递方法中慢慢浮现,取决于输入参考度(preference),这种自动模型的选择,基于先验指定每一个数据点有多合适作为exemplar. 下图表示输入常量参考度对聚类数目的影响,这种关系近乎同样于在精确最小平方误差中的关系. 例2,人脸识别:使用优化标准为均方差,识别900张灰度图像   AP一致的能够实现更低的误差,在时间上花费要少于两个数量级. AP

Python之路42-socket介绍及简单例子

socket对数据的底层收.发做了封装 实现通信要通过IP+port 一个socket服务端和客户端实现的伪代码 # 发送端 # import socket # socket.TCP/IP # connect(a.ip,a.port) # socket.send("hello") # socket.recv() # socket.close() # 接收端 # import socket # socket.TCP/IP # listen(0.0.0.0,6969) # waiting(

c语言一个例子对比php学习随记

今天开始学写一些简单的C例子,发现很多和PHP不一样的地方,做个笔记. #include <stdio.h> int main(void) { int a,b; printf("请输入整数a"); //这里是用双引号,不能用单引号,PHP类似的地方可以用单引号,这里需注意 scanf("%d",&a); //获取用户输入值存入a printf("请输入整数b"); scanf("%d",&b);//

判断当前进程是否以管理员权限运行(AllocateAndInitializeSid后,用CheckTokenMembership与AdministratorsGroup进行比较,和Delphi的那个例子还有点不一样)

在Win7下(Vista以上的...)有时某些操作就是会让人郁闷 开启了UAC的话,得以管理员权限运行才不会出现Access is denied... 但是,程序又不是非得什么时候都用那破管理员权限的 总不能在manifest里加权限,然后用户运行时老弹确认吧? 当然啦,可以将需要管理员权限的部分写到另一个小程序,需要时调用它就行了 不过还是不爽,如果是一个小小的程序还要再加另一个小小小程序的话 那好,干脆判断是不是Win7...开启了UAC没有之类 开启的话再判断下是不是以管理员权限运行,不是

Web前端入门学习(6)——浮动例子之鉴赏

浮动例子之鉴赏 在浮动原理及清除浮动一文中(http://cherry360.blog.51cto.com/12176744/1864258),简单介绍了浮动的相关基础知识,为了巩固知识点,本篇结合代码展示关于浮动的几个常见例子. 例1:九格子 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>九格子</titl

【Bootstrap Demo】入门例子创建

本文简单介绍下如何来使用 Bootstrap,通过引入 Bootstrap,来实现一个最基本的入门例子. 在前一篇博文[Bootstrap]1.初识Bootstrap 基础之上,我们完全可以更加方便快捷的创建一个的简单例子.这个例子只有基本的东西:引入了预编译版的 CSS 和 JavaScript 文件,页面只包含了一个 container 元素. 在Bootstrap的官方网站的下载页面 http://getbootstrap.com/getting-started/#download ,也有