`
dongfanghan1985
  • 浏览: 12304 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

c++ 增加windows服务和获取当前路径

阅读更多
来源 :http://blog.csdn.net/gukesdo/article/details/6866741

c++ 获取当前路径
[cpp] view plaincopy

    #include <iostream> 
    #include <windows.h> 
    #include <string> 
    using namespace std; 
    int main() 
    { 
        char buf[1000]; 
        int i=1000; 
        GetCurrentDirectory(1000,buf);  //得到当前工作路径 
        cout<<buf<<endl; 
     
        string a; 
        a.assign(buf); 
        cout<<a<<endl; 
        //这里加入的路径必须是正确的路径,如果加入错误的路径,如大小写 
        //和目录名不一样,还有空格,名字不相同等,都会导致SetCurentDirectory 
        //设置路径不成功,从而导致GetCurrentDirectory获取不到正确的路径,这样 
        //GetCurrentDirectory获取的路径就是当前路径或者是上一次SetCurrentDirectory 
        //设置成功的那个路径,GetCurrentDirectory获取一般是不会出错的。 
         
        /**在这里添加路径的时候,每一次都用到两个\,这样做的原因是为了防止文件
        的目录名中出现转义字符,比如如果目录名字是以t开头的,则\t意义
        就是制表符,而不是目录名。并且惊奇的发现,在这里使用两个/可以达到相同
        的效果,不知道是什么原因,很可能是因为在操作系统内部就是这样做的,因为
        在cmd dos命令行下,路径都是以/分割的,而在文件目录名显示的时候则是以\分
        割的,而且在dos命令行下切换目录的时候这两种也都可以!甚至是两者混写都可以.
        为了规范都写成\\***/ 
     
        //设置为当前工作路径为当时的上一级 
        //a.append("//..//"); 
        //a=a+"..//"; 
        a.append("\\..\\"); 
        //随意设置路径,只要是正确的,否则会导致SetCurrentDirectory执行错误 
        //a.append("//..//..//Service_Windows//Servic_Windows"); 
        //a.append("\\..\\Service_Windows\\Service_Windows"); 
        a.append("\\..\\Service_Windows//Service_Windows"); 
     
        int test = SetCurrentDirectory(a.c_str());  //设置当前路径值 
        if (test == 0 ) 
        { 
            cout << "execute failed\n"; 
        } 
        GetCurrentDirectory(1000,buf); 
        //这里用两个反斜杠是必须得,因为这不通过操作系统来进行目录切换, 
        //只是简单的字符串拼接 
        strcat(buf,"\\Srvice_Windows\\Srvice_Windows"); 
        cout << buf << endl; 
         
        a.assign(buf); 
        test = SetCurrentDirectory(a.c_str()); 
        if (test == 0 ) 
        { 
            cout << "execute failed\n"; 
        } 
        GetCurrentDirectory(1000,buf); 
        cout<<buf<<endl; 
     
        return 0; 
    } 



附件test.cpp 为开发windows服务代码。
分享到:
评论

相关推荐

    c++_获取当前程序(EXE)所在的路径

    这段代码首先调用`GetModuleFileName`函数来获取当前模块的完整路径和文件名,然后通过查找最后一个反斜杠(或正斜杠,取决于操作系统)的位置,从而截取路径部分,去除文件名。 ### 二、获得双斜杠路径不包含...

    VC获取当前路径

    总结,获取VC++程序的当前路径,可以通过调用Windows API的GetModuleFileName函数或使用C++17的std::filesystem::current_path()。根据项目的需求和所使用的编译器版本,选择适合的方法。在实际应用中,理解并掌握...

    获取当前鼠标选中的文件的路径

    在Windows操作系统中,获取当前鼠标选中的文件的路径是一项常见的任务,这通常涉及到与系统壳层(Shell)的交互,也就是Windows Shell扩展编程。通过Shell,我们可以访问到桌面、文件资源管理器等环境下的对象,并...

    vc++ 获取当前路径

    在VC++编程中,获取当前路径是常见的任务,特别是在处理文件和目录操作时。了解如何获取当前工作目录对于编写能够正确定位资源的程序至关重要。在本文中,我们将深入探讨如何在VC++环境中获取当前路径,并提供相关的...

    c++获取windows文件版本信息

    本文将详细讨论如何使用C++编程语言,在Windows环境下通过两种方法获取文件版本信息:WinAPI函数和解析PE(Portable Executable)文件结构。 首先,我们来介绍WinAPI方法。Windows API提供了`GetFileVersionInfo`、...

    vc获取当前默认浏览器路径

    在Windows操作系统中,获取当前默认浏览器的路径是开发者在编程时常常需要实现的功能之一,尤其在Visual C++(简称VC)环境下。这个过程涉及到系统注册表的读取,因为Windows系统通常将默认浏览器的信息存储在注册表...

    c++ 获取当前程序(EXE)所在的路径.docx

    ### C++ 获取当前程序(EXE)所在的路径 在C++编程中,获取当前程序执行文件(EXE)所在的路径是一项常见的需求。这通常用于动态加载资源文件或进行其他与程序位置相关的操作。以下将详细介绍几种获取当前程序路径的...

    获取当前的输入法(vc)

    在Windows中,输入法是由系统服务IME(Input Method Editor)提供的,它允许用户在不同的输入语言和字符集之间切换。为了获取当前活动的输入法,我们需要使用Windows API中的几个关键函数,例如...

    C++ 设置和获取当前工作路径的实现代码

    在C++编程中,了解如何设置和获取当前工作路径是非常重要的,特别是在涉及到动态链接库(DLL)、配置文件和资源加载的场景。当前工作路径是程序执行时默认查找文件和资源的位置,如果设置不当,可能导致DLL无法正确...

    c++遍历文件夹及其子文件夹所有文件 并输出文件路径和文件内容

    将文件路径和内容分别输出到控制台。记得在每次读取完文件后关闭文件流,以释放资源。 下面是一个基于`std::filesystem`的示例代码片段: ```cpp #include #include void traverse(const std::filesystem::...

    获取应用程序的路径

    在编程领域,尤其是在Windows系统上使用C++进行开发时,获取应用程序的路径是一个常见的需求。这通常涉及到获取可执行文件的完整路径,包括文件名,以便于读取配置文件、写入日志或者访问资源等操作。在VS2008环境下...

    获取可执行程序当前路径.rar

    在Windows系统中,当一个可执行程序需要在开机时自动启动并获取自身的当前路径时,开发者通常会利用特定的编程技巧来实现这一功能。这里,我们主要探讨的是如何通过编程来获取可执行程序的当前路径,并了解如何设置...

    VC获取Windows各种目录路径

    本篇将深入探讨如何使用Visual C++(简称VC)来获取Windows系统中的多种目录路径,包括Windows目录、系统目录、临时目录、当前工作目录以及Program Files目录,通过实例代码和详细解释,帮助读者掌握这一关键知识点...

    C++ 获取当前的移动磁盘并显示

    总的来说,C++获取当前移动磁盘并显示的过程涉及了对Windows API的深入理解和使用。这个过程可以扩展到其他操作系统,比如在Linux下,你可以使用`udev`规则或`libudev`库来检测移动设备。理解和应用这些知识,可以...

    VC++获取当前路径常用函数

    `GetModuleFileName()` 是Windows API中的一个函数,不仅适用于获取当前进程的可执行文件路径,还能获取到模块(如DLL)的路径。它接受一个`HMODULE`参数(通常是`NULL`,表示当前进程),并返回一个缓冲区,其中...

    C++ 获取程序运行目录

    在C++中,我们可以使用`GetModuleFileName()`函数来获取当前进程的完整路径,然后通过处理这个路径来提取出运行目录。 首先,我们需要包含必要的头文件,以便使用`GetModuleFileName()`函数: ```cpp #include ...

    获取执行文件路径(win7,xp)

    本知识点主要讲解如何在Windows XP和Windows 7上利用API函数`GetModuleFileName`来获取当前进程的完整路径。 `GetModuleFileName`是Windows API提供的一种功能,用于获取指定模块的完整文件名。这里的“模块”通常...

Global site tag (gtag.js) - Google Analytics